Je commence à apprendre 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 j'exécute la requête, cela me donne cette erreur:
Msg 5120, niveau 16, état 101, ligne 1 Impossible d'ouvrir le fichier physique "C: \ Murach \ SQL Server 2008 \ Databases \ AP.mdf". Erreur du système d'exploitation 5: "5 (accès 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, j'ai donc posté cette question.
sql
sql-server
dijai jijfs
la source
la source
Réponses:
Le compte de service du moteur de base de données SQL Server doit disposer des autorisations de lecture / écriture dans le nouveau dossier.
Regardez ceci
la source
Administrators Group
MSSQL$SQLEXPRESS
), il n'est peut-être pas évident que vous deviez ajouter le compte à la liste des autorisations de dossier en tant que:NT Service\MSSQL$SQLEXPRESS
Un ancien post, mais voici une étape par étape qui a fonctionné pour SQL Server 2014 sous Windows 7:
Voilá!
Je pense que la configuration du compte de connexion peut avoir été une option dans l'installation, mais si tel était le cas, ce n'était pas la valeur par défaut et était facile à manquer si vous n'étiez pas déjà au courant de ce problème.
la source
Pour contourner le problème d'accès refusé, j'ai démarré SSMS en tant qu'administrateur et cela 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.
la source
Il s'agit d'un problème lié à Windows où SQL Server ne dispose pas de l'autorisation appropriée sur le dossier qui contient le fichier .bak et par conséquent cette erreur.
La solution la plus simple consiste à copier votre fichier .bak dans 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
la source
J'ai eu ce problème. Exécutez simplement SQL Server en tant qu'administrateur
la source
Oui, c'est vrai. Vous devez d'abord connaître votre compte de service de sqlserver, vous pouvez le voir dans le Gestionnaire des tâches lorsque vous appuyez sur ctrl + alt + supprimer en même temps; Ensuite, vous devez donner le privilège de lecture / écriture de "C : \ Murach \ SQL Server 2008 \ Databases "au compte de service.
la source
Le problème est dû au manque d'autorisations permettant à SQL Server d'accéder aux fichiers mdf et ldf. Toutes ces procédures fonctionneront:
la source
Je résous ce problème en ajoutant une
Full control
autorisation pour les deux fichiers.mdf
et.ldf
pour leUsers
groupe.la source
Pour moi, cela a été résolu de la manière suivante avec SQL Server Management Studio -Connectez-vous en tant qu'administrateur (je me suis connecté en tant qu'authentification Windows) -Attachez le fichier mdf (clic droit sur la base de données | attacher | Ajouter) -Déconnectez-vous en tant qu'administrateur -Connectez-vous en tant que utilisateur normal
la source
Les autorisations réelles du serveur 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 des autorisations SERVERNAME $ MSSQLSERVER pour toucher votre dossier. Sinon, il doit être dans le répertoire BACKUP par défaut (où vous l'avez installé ou par défaut dans c: \ programfiles (x) \ MSSQL \ BACKUP.
la source
Même si vous effectuez les étapes suivantes, vous POURRIEZ obtenir le même message d'erreur.
J'ai toujours eu l'erreur d'autorisation, mais j'ai ensuite remarqué que dans l'écran Joindre, la section inférieure affiche TOUJOURS le fichier LOG et le message d'erreur est resté le même.
J'espère que cela aide quelqu'un qui a fait la même chose.
la source
Solution très simple.
la source
J'ai utilisé le framework Entity dans mon application et j'ai eu ce problème, j'ai défini une autorisation dans les dossiers et les services Windows et je ne travaille pas, après cela je démarre mon application en tant qu'administrateur (clic droit dans le fichier exe et sélectionnez "exécuter en tant qu'administrateur") et cela fonctionne bien.
la source
Si vous obtenez cette erreur sur un
.MDF
fichier dans leAPP_DATA
dossier (ou où que vous soyez) pour un projet Visual Studio, la façon dont je l'ai fait était de simplement copier les autorisations duDATA
dossier existant ici (j'utilise SQL Express 2014 pour prendre en charge une ancienne application):(Remarque: votre chemin d'installation réel peut varier - surtout si le nom de votre instance est différent)
Double-cliquez d'abord sur le
DATA
dossier en tant qu'administrateur pour vous assurer que vous avez accès, puis ouvrez les propriétés du dossier et imitez la même chose pour leAPP_DATA
dossier. Dans mon cas, l'utilisateur manquant l'étaitMSSQL$SQLEXPRESS2014
(car j'ai nommé l'instanceSQLEXPRESS2014
- la vôtre peut être différente). Il s'agit également du nom d'utilisateur du service SQL Server.la source
Pour une raison quelconque, définir toutes les autorisations correctes n'a pas aidé dans mon cas. J'avais un fichier
db.bak
que je n'ai pas pu restaurer en raison de l'5(Access is denied.)
erreur. Le fichier était placé dans le même dossier que plusieurs autres fichiers de sauvegarde et toutes les autorisations étaient identiques aux autres fichiers. J'ai pu restaurer tous les autres fichiers à l'exception de cedb.bak
fichier. J'ai même essayé de changer le journal du service SQL Server sur l'utilisateur - toujours le même résultat. J'ai essayé de copier le fichier sans effet.Ensuite, j'ai essayé de créer simplement un fichier identique en exécutant
au lieu de copier le fichier. Et voila ça a marché!
db2.bak
restauré avec succès.Je soupçonne que certains autres problèmes de lecture du fichier de sauvegarde peuvent être signalés
5(Access is denied.)
par erreur comme par MS SQL.la source
Sous Linux, je suis allé dans un
/var/opt/mssql/data/
dossier et j'ai ouvert un terminal avecsudo
ensuite, j'ai changé mes autorisations de fichier * .mdf et * .ldf comme ci-dessous dans lesquelles vous remplacezyourDB
par le nom de votre fichier de base de données et par le nommyUser
d'utilisateur actuellement connecté:Après cela, il a été reconnecté sans aucun problème.
la source
Cela signifie que l'utilisateur de connexion SSMS n'a pas l'autorisation sur le fichier .mdf. Voici comment cela a fonctionné pour moi:
J'avais ouvert le SSMS (Exécuter en tant qu'administrateur) et me connecter en tant qu'utilisateur administrateur, cliquez avec le bouton droit sur la base de données, cliquez sur Ajouter, sélectionnez le fichier .mdf, cliquez sur OK. Terminé.
la source