web-dev-qa-db-fra.com

Erreur de système d'exploitation SQL Server 5: "5 (l'accès est refusé.)"

Je commence à apprendre le SQL et j'ai un livre qui fournit une base de données sur laquelle travailler. Ces fichiers ci-dessous sont dans le répertoire mais le problème est que lorsque je lance la requête, cela me donne l'erreur suivante:

Msg 5120, niveau 16, état 101, ligne 1 Impossible d'ouvrir le fichier physique "C:\Murach\SQL Server 2008\Bases de données\AP.mdf". Erreur du système d'exploitation 5: "5 (L'accès est refusé.)".

   CREATE DATABASE AP
      ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
      LOG ON (FILENAME =     'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
      FOR ATTACH
    GO

Dans le livre, l'auteur dit que cela devrait fonctionner, mais cela ne fonctionne pas dans mon cas. J'ai cherché mais je ne sais pas exactement quel est le problème, alors j'ai posté cette question.

127
dijai jijfs

Le compte de service du moteur de base de données SQL Server doit disposer d'autorisations de lecture/écriture dans le nouveau dossier.

Découvrez this

Pour réparer, j'ai fait ce qui suit:

Ajout du groupe d'administrateurs aux autorisations de sécurité de fichier avec Contrôle total du fichier de données (S :) et du fichier journal (T :).

Attaché la base de données et cela fonctionne bien.

enter image description here

enter image description here

119
Rahul Tripathi

Un ancien message, mais voici un exemple étape par étape qui a fonctionné pour SQL Server 2014 sous Windows 7:

  • Panneau de configuration ->
  • Système et sécurité ->
  • Outils d'administration ->
  • Services ->
  • Double-cliquez sur SQL Server (SQLEXPRESS) -> clic droit, Propriétés
  • Sélectionnez l'onglet Connexion
  • Sélectionnez "Compte système local" (la valeur par défaut était un compte système Windows obtus)
  • -> ok
  • clic droit, Stop
  • clic droit, Démarrer

Voila! 

Je pense que la configuration du compte de connexion a peut-être été une option dans l'installation, mais si ce n'était pas le cas par défaut, et était facile à manquer si vous n'étiez pas au courant de ce problème.

82
mickeyf

Il s'agit d'un problème lié à Windows, dans lequel SQL Server ne dispose pas de l'autorisation appropriée sur le dossier contenant le fichier .bak, d'où l'origine de cette erreur. 

La solution la plus simple consiste à copier votre fichier .bak vers l’emplacement de sauvegarde SQL par défaut, qui dispose de toutes les autorisations nécessaires. Vous n'avez pas besoin de jouer avec autre chose. Dans SQL SERVER 2012 , cet emplacement est

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup (SQL 2012)
C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup (SQL 2014)
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Backup (SQL 2016)
40
Hammad Khan

Pour contourner le problème d'accès refusé, j'ai lancé SSMS en tant qu'administrateur, ce qui m'a permis de joindre une base de données à partir de mon lecteur local. La base de données a été créée dans une autre instance SQL et Windows.

33
JayKayOf4

Oui, c’est vrai. Le premier que vous devriez connaître votre compte de service de sqlserver, vous pouvez le voir dans le Gestionnaire des tâches lorsque vous appuyez simultanément sur ctrl + alt + suppression; :\Murach\SQL Server 2008\Databases "au compte de service.

12
Tim

Le problème est dû au manque d'autorisations pour SQL Server d'accéder aux fichiers mdf et ldf. Toutes ces procédures fonctionneront:

  1. vous pouvez directement modifier le compte d'utilisateur de démarrage du service MSSQLSERVER, avec le compte d'utilisateur qui dispose de meilleurs privilèges sur les fichiers. Ensuite, essayez de joindre la base de données.
  2. Ou vous pouvez affecter l'utilisateur au fichier dans l'onglet Sécurité des propriétés des fichiers mdf & ldf avec les privilèges de lecture et d'écriture cochés.
  3. Démarrez avec un compte administrateur Windows, ouvrez SQL Server avec l'option Exécuter en tant qu'administrateur, essayez de vous connecter avec l'authentification Windows et essayez maintenant de joindre la base de données.
9
Chandra Sekhar

j'ai eu ce problème. il suffit de lancer le serveur SQL en tant qu'administrateur 

4
Aref Bozorgmehr

Je résous ce problème en ajoutant l'autorisation Full control pour les fichiers .mdf et .ldf pour le groupe Users.

4

Les autorisations de serveur réelles n’auront pas d’importance à ce stade; tout semble ok . SQL Server lui-même a besoin d'autorisations de dossier.
Selon votre version, vous pouvez ajouter les autorisations SERVERNAME $ MSSQLSERVER pour toucher votre dossier. Autrement, il doit figurer dans le répertoire BACKUP par défaut (où vous l'avez installé ou par défaut dans c:\programfiles (x)\MSSQL\BACKUP.

4
Claudia

Pour moi, le problème a été résolu de la manière suivante avec SQL Server Management Studio. -Log out en tant qu'administrateur - Connectez-vous en tant qu'utilisateur normal

3
RotatingWheel

Même si vous suivez les étapes suivantes, vous pourriez obtenir le même message d'erreur.

1. login as SA user (SSMS)
2. Edit the file permissions to say "everyone" full access (windows folder)
3. Delete the Log file (Windows Exploring  (this was what I had done per advise from some msdn forum) 

J'ai quand même eu l'erreur de permission, mais j'ai ensuite remarqué que dans l'écran Attacher, la section inférieure STILL indiquait le fichier LOG et que le message d'erreur restait le même.

J'espère que cela aide quelqu'un qui a fait la même chose.

2
Tom Stickel

Solution très simple.

  1. Connexion avec l'administrateur système
  2. copiez vos fichiers mdf et ldf dans "C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA" où tous les autres fichiers de données sont récurrents.
  3. Maintenant attachez à partir de là cela fonctionnera
0
AmitykSharma

Si vous obtenez cette erreur sur un fichier .MDF dans le dossier APP_DATA (ou où que vous le placiez) pour un projet Visual Studio, la méthode que j’ai choisie consistait simplement à copier les autorisations du dossier DATA existant (j’utilise SQL Express). 2014 pour prendre en charge une ancienne application): 

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\DATA

(note: votre chemin d'installation actuel peut varier, surtout si votre nom d'instance est différent)

Double-cliquez d'abord sur le dossier DATA en tant qu'administrateur pour vous assurer que vous y avez accès, puis ouvrez les propriétés du dossier et reproduisez-le de la même manière pour le dossier APP_DATA. Dans mon cas, l'utilisateur manquant était MSSQL$SQLEXPRESS2014 (parce que j'ai nommé l'instance SQLEXPRESS2014 - le vôtre peut être différent). Il s’agit également du nom d’utilisateur du service SQL Server.

0
James Wilkins

J'ai utilisé Entity Framework dans mon application et j'ai eu ce problème, j'ai défini une autorisation dans les dossiers et les services Windows et ne fonctionne pas, Après cela, je lance mon application en tant qu'administrateur (clic droit dans le fichier exe et sélectionnez "Exécuter en tant qu'administrateur") et ça marche bien.

0
Ali Yousefie