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.
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.
Un ancien message, mais voici un exemple étape par étape qui a fonctionné pour SQL Server 2014 sous Windows 7:
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.
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)
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.
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.
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:
j'ai eu ce problème. il suffit de lancer le serveur SQL en tant qu'administrateur
Je résous ce problème en ajoutant l'autorisation Full control
pour les fichiers .mdf
et .ldf
pour le groupe Users
.
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.
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
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.
Solution très simple.
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.
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.