web-dev-qa-db-fra.com

Impossible d'installer la base de données adventureworks 2012 - Erreur du système d'exploitation 5: l'accès est refusé

J'essaie d'installer la base de données AdventureWorks 2012 sur le serveur SQL 2012. J'ai le fichier mdf de ce lien - http://msftdbprodsamples.codeplex.com/releases/view/93587

Voici le nom du fichier que j'ai téléchargé - AdventureWorks2012_Database.Zip

Je fais tout cela sur un Windows 7 64 bits. 

Je reçois l'erreur ci-dessous:

Attach database failed for Server 'SuperPC\SQL2012'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1917+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476

ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Unable to open the physical file "C:\Databases\AdventureWorks2012_Data.mdf". Operating system error 5: "5(Access is denied.)". (Microsoft SQL Server, Error: 5120)

For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
23
Steam

La raison du problème - Mettre les fichiers mdf et ldf de la base de données dans un répertoire situé en dehors du dossier d'installation "officiel" du serveur SQL.

Solution - 

http://tryingmicrosoft.com/error-while-attaching-a-database-to-sql-server-2008-r2/

Collez votre fichier .mdf et votre fichier ldf dans ce répertoire - C:\Program Files\Microsoft SQL Server\MSSQL11.SS2012\MSSQL\DATA 

Des solutions qui n'ont PAS résolu le problème - 

1 - Débloquer les fichiers compressés. Vérifiez également que les fichiers mdf et ldf ne sont pas bloqués. (Étapes - clic droit sur le fichier zip> propriétés> débloquer)

Unblock

2 - Exécutez SSMS 2012 en tant qu'administrateur.

3 - Exécuter une requête SQL de la forme - 

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), 
    (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') 
    FOR ATTACH; 
68
Steam

Les options

1. Déplacez .mdf et .ldf dans le répertoire d'installation du serveur SQL\Data\folder .__ (par exemple, C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA)

2. Exécuter SQL Server Management Studio en tant qu'administrateur

3. Ajoutez des droits à l'utilisateur SQL Server dans le répertoire auquel vous avez besoin d'accéder. Je ne savais pas quel utilisateur était correct, mais j'ai réussi à le faire fonctionner en donnant au compte "[PCNAME]\Users" un accès complet au dossier.

Pas

Dossier clic droit. Sélectionnez Propriétés. Sélectionnez l'onglet "Sécurité". Cliquez sur "Modifier". Sélectionnez "Utilisateurs ([PCNAME]\Utilisateurs)", par exemple si le nom du PC était mycomp alors ce serait "Utilisateurs (mycomp\Utilisateurs)"

Cliquez sur la case à cocher "Autoriser" en regard de "Contrôle total" sous "Autorisations .__ pour les utilisateurs".

Voir ici pour plus de détails sur les options 1 et 2 ..

CREATE FILE a rencontré l'erreur 5 du système d'exploitation (impossible d'extraire le texte pour cette erreur. Raison: 15105)

18
Cyborg

J'ai changé les permissions et cela a fonctionné pour moi: Security -> Advanced. Ajoutez 'NT Service\MSSQLSERVER' et donnez un accès complet, désactivez l'héritage , ajoutez-vous pour faciliter le dépannage. Faites cela sur les fichiers .mdf et .ldf.

12
Mikl X

Vous n'êtes pas obligé de déplacer le fichier .mdf. Faites un clic droit sur le dossier dans lequel se trouve la base de données et modifiez les autorisations de sécurité. J'ai donné utilisateurs authentifiés contrôle total. Ensuite, j'ai exécuté le script TSQL ci-dessous pour attacher la base de données:

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Data.mdf'), 
    (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Log.ldf') 
    FOR ATTACH; 

Comme vous pouvez le constater, mes fichiers de base de données sont situés dans un dossier appelé Adventureworks.

7
Roger

Erreur 5 - L'accès est refusé - vient de l'ancien système DOS. Fondamentalement, il s’agit d’une erreur ACL - liste de contrôle d’accès. 

Vous pouvez mettre des bases de données où bon vous semble tant que le compte SQL SERVER SERVICE est accessible!

Peu importe votre identité de connexion, c'est le compte de service qui doit accéder au répertoire et aux fichiers.

Vous n'avez pas besoin d'exécuter SSMS en tant qu'administrateur. J'ai attaché des bases de données tout le temps sans cette étape.

6
CRAFTY DBA

Supprimez simplement le fichier journal, si vous créez la base de données pour la première fois en attachant, cela pourrait vous aider.

J'essayais de créer une base de données en attachant et je n'arrêtais pas d'obtenir une capture d'écran similaire

enter image description here

Grâce à l’article ci-dessous, j’ai trouvé et je devais simplement supprimer le journal. C’était évident, mais MS n’a pas proposé de ne pas afficher seul de nouvelles bases de données. Très mauvaise expérience, pas sûr si ses semblables pour les produits sous licence SQL Server.

http://exacthelp.blogspot.in/2012/12/unable-to-open-physical-file-operating.html

6
user_v

Étapes pour associer la base de données AdventureWorks2012 à votre base de données MSSQL locale:

Solution 1: / Si vous disposez de suffisamment d'espace disque dans C:\Drive sous Windows et souhaitez créer la base de données sous C:\Drive

  1. Placez AdventureWorks2012_Data.mdf et AdventureWorks2012_log.ldf à l'emplacement ci-dessous C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

2.Cliquez à droite sur «Bases de données» dans l'explorateur d'objets et sélectionnez «Joindre».

3.Dans la boîte de dialogue Attacher des bases de données, cliquez sur le bouton "Ajouter" dans les bases de données à attacher:.

  1. Accédez à l'emplacement du fichier MDF C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Data.mdf et Cliquez sur "OK" au bas de la boîte de dialogue "Attacher des bases de données" .

5.Maintenant, la base de données 'AdventureWorks2012' est créée dans SQL Server.

Solution 2: / Si vous n'avez pas assez d'espace disque dans C:\Drive sous Windows

1.Connectez-vous à votre serveur local en sélectionnant le nom du serveur XXX\SQLEXPRESS et l'authentification - 'Authentification Windows'.

2.Cliquez à droite sur «Bases de données» dans l'explorateur d'objets et sélectionnez «Joindre».

3.Dans la boîte de dialogue Attacher des bases de données, cliquez sur le bouton "Ajouter" dans les bases de données à attacher:.

  1. Accédez à l'emplacement du fichier MDF pour, par exemple. F:\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf et cliquez sur "OK" en bas de la boîte de dialogue "Attacher des bases de données".

  2. Cela générera le message d'erreur ci-dessous: 'Une erreur s'est produite lors de la connexion de la ou des bases de données. Cliquez sur l'hyperlien dans la colonne Message pour plus de détails. '

  3. SOLUTION c'est: 

    i) Cliquez avec le bouton droit sur le dossier AdventureWorks2012_Data, sélectionnez Propriétés.

    ii) cliquez sur l'onglet 'Sécurité'

    iii) Sélectionnez Utilisateurs (xxx\Utilisateurs) dans la section "Noms d'utilisateur ou de groupe".

    iv) Cliquez sur le bouton 'Editer'

    v) Sélectionnez Utilisateurs (xxx\Utilisateurs) dans les "Noms d'utilisateur ou de groupe:" de la fenêtre contextuelle,

    vi) Cochez la case "Contrôle total" dans la section "Autorisations pour les utilisateurs".

    vii) Cliquez sur ok & ok.

  4. Revenons maintenant à l'écran Attacher des bases de données de SQLsevers. Cliquez sur le bouton 'Ajouter' des bases de données à attacher: champ.

  5. Accédez à l'emplacement du fichier MDF, par exemple. F:\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf et cliquez sur "OK" en bas de la boîte de dialogue "Attacher des bases de données".

  6. Maintenant, la base de données 'AdventureWorks2012' est créée dans SQL Server.

6
Dorababu G

Je me rends compte que c’est une vieille question, mais pour moi, il était nécessaire de joindre une base de données outside le dossier par défaut:

  1. Je devais accorder explicitement à l'utilisateur actuel (moi) un accès complet au dossier (en dépit de posséder déjà des autorisations implicites)
  2. Je devais accorder NT SERVICE\MSSQL$INSTANCENAME Accès complet au dossier

Je suppose que # 1 n'est pas requis si le processus (SSMS) est élevé.

2
Richard Szalay
  1. Joindre la base de données.
  2. Dans la boîte de dialogue, sélectionnez l'emplacement du fichier de AdventureWorks.
  3. Ajoutez le fichier.
  4. Supprimez le fichier journal, car le serveur SQL en créera un plus tard une fois la base de données attachée.
2
Rupinder Sood

Merci pour les suggestions précédentes. Vous n'avez pas besoin de déplacer les fichiers de base de données vers le répertoire du serveur SQL ou de supprimer le fichier journal de la base de données. Au lieu de cela, vous accordez simplement l'autorisation Contrôle total aux fichiers .MDF et .LDF pour les utilisateurs authentifiés. Ainsi, j'attache avec succès les exemples de bases de données AdventureWorks2012 et AdventureWorksLT2012 dans SQL Server Management Studio (SSMS).

0
Yong Yuan

J'ai résolu ce problème en téléchargeant les travaux d'aventure à partir de ce site 

http://msftdbprodsamples.codeplex.com/downloads/get/723031

Remarque lorsque vous téléchargez un dossier Zip Adventure Works, assurez-vous que le fichier est ajouté avec _data, par exemple AdventureWorks2012_Data.Zip, car ce fichier contient les fichiers .mdf et .ldf.

Une fois téléchargé, extrayez le contenu du dossier dans cette URL sur votre ordinateur C:\Program Files\Microsoft SQL Server\MSSQL11. ***\MSSQL\DATA. Dans le serveur SQL, accédez à l'Explorateur d'objets et cliquez avec le bouton droit de la souris sur les bases de données pour attacher la base de données. Dans la boîte de dialogue Joindre, vous devez sélectionner Adve ********. Mdf. Tout ce que vous devriez être bien d'ici.

J'espère que ça aide.

0
Friedrich

J'ai eu le même problème en essayant de créer une nouvelle base de données avec les paramètres personnalisés de ASP.NET MVS et j'ai perdu quelques heures à le résoudre. Enfin, ma solution consistait à entrer dans le dossier options/seurity de mon dossier App_Data. Ensuite, j'ai ajouté un compte 'utilisateurs authentifiés' et je lui ai donné le contrôle total. Et c'était tout. Mon application fonctionne bien ..

0
Kiril Dobrev

il suffit d’ajouter l’utilisateur actuel à l’onglet sécurité pour obtenir un contrôle total et une nouvelle exécution de la requête atttach

0
TrayS

Donner le compte de service SQL 'NT SERVICE\MSSQLSERVER' "Contrôle total" des fichiers de base de données

Si vous avez accès aux fichiers/dossiers du serveur, vous pouvez essayer cette solution qui a fonctionné pour moi:

SQL Server 2012 sur Windows Server 2008 R2

  1. Cliquez avec le bouton droit sur le fichier ou le dossier de la base de données (mdf/ldf) et sélectionnez "Propriétés".
  2. Sélectionnez l'onglet "Sécurité" et cliquez sur le bouton "Modifier".
  3. Cliquez sur le bouton "Ajouter".
  4. Entrez le nom de l'objet à sélectionner comme "NT SERVICE\MSSQLSERVER" et cliquez sur le bouton "Vérifier les noms".
  5. Sélectionnez le MSSQLSERVER (RDN) et cliquez deux fois sur le bouton "OK".
  6. Attribuez à ce compte de service un "contrôle total" sur le fichier ou le dossier.
  7. De retour dans SSMS, cliquez avec le bouton droit de la souris sur la base de données et sélectionnez "Propriétés".
  8. Sous "Options", faites défiler jusqu'à la section "État" et remplacez "Vrai" par "Base de données en lecture" par "Faux".
0
SimplyInk

en fait c'est assez facile. Il suffit de renommer les fichiers . Pas besoin de vous déplacer, ajoutez des autorisations comme quoi que ce soit ...

0
user763539

REMARQUE: Windows 7 Pro, SQL 2012

Après avoir utilisé DiskManager.msc, j'ai dû ajouter machine_name\SERVICE avec un contrôle total sur les fichiers .mdf et .ldf.

Mon ordinateur portable est Borris alors: 

  1. Cliquez avec le bouton droit sur le fichier `nom -> propriétés, cliquez sur l'onglet SÉCURITÉ, puis sur Autorisations -> ajouter, puis vérifiez le type de noms dans les services.
  2. Pour revenir, appuyez sur OK, appliquez-vous, ok, ok, ok, et ok.

Vous ne savez pas pourquoi changer de lettre de lecteur réinitialise mes autorisations, mais c'est ce qui s'est passé sous Windows entrer la description de l'image ici