Je reçois plusieurs erreurs avec LocalDB
( erreur de démarrage , impossible de créer une base de données à partir de SQL Server Management Studio et également plusieurs problèmes lors de la tentative de restauration d'une sauvegarde) et aucun des correctifs que j'ai trouvés n'aide quoi que ce soit. Il me semble que toutes les erreurs ont leur racine dans les autorisations qui ne sont pas configurées correctement.
Désormais, un simple script de création de table DDL fonctionne correctement à partir de SQL Server Management Studio et crée la base de données à la racine du dossier de mon compte d'utilisateur ( comme expliqué ici ). Le dossier Instances cependant (situé D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
malgré malgré l'installation de SQL Server Express avec Advanced Services j'ai spécifié le dossier DATA dans un autre emplacement - où seuls les .mdf
fichiers SQL Server Express standard sont stockés, mais pas les LocalDB
instances) semble problématique concernant les autorisations (contrairement au compte root) donc et aussi pour avoir mes fichiers DB dans un emplacement parmi mes projets, je voudrais déplacer le dossier Instances vers un autre endroit. Est-ce possible? Je n'ai même pas trouvé d'entrée de registre correspondante.
J'utilise SQL Server Express 2012 et également SSMS de la même version (dernières mises à jour installées).
Toute aide serait appréciée.
Modifier: La page Paramètres de la base de données mentionnée précédemment par KookieMonster a généré une erreur pour moi, ne pouvant pas modifier ni voir aucune configuration là-bas. J'ai laissé Windows Update vérifier à nouveau les mises à jour et il y avait des mises à jour pour SQL Server Express qui n'étaient pas installées (bien que je sois sûr d'avoir tout sélectionné avant), donc je les ai installées. Cela m'a permis d'accéder à la page des paramètres.
J'ai essayé de configurer le dossier racine de l'instance LocalDB ailleurs mais j'obtiens une erreur d'accès refusé pour chaque dossier que j'ai essayé, à savoir
La modification a échoué pour les paramètres «Microsoft.SqlServer.Management.Smo.ObjectKeyBase». (Microsoft.SqlServer.Smo)
------------------------------ INFORMATION ADDITIONNELLE:
Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
RegCreateKeyEx () a renvoyé l'erreur 5, «l'accès est refusé». (Microsoft SQL Server, erreur: 22002)
J'obtiens ceci même si le dossier a un contrôle total défini pour tout le monde! Encore plus amusant, le seul dossier qui fonctionne, celui qui est défini par défaut (la racine du compte d'utilisateur) n'a pas d'autorisations spéciales appliquées - uniquement celles de mon utilisateur (comme tout autre dossier que j'ai essayé de définir). En effet, cela signifie que tous les fichiers de mes bases de données LocalDB sont enregistrés dans le dossier racine de mon compte.
Réponses:
Voir mon commentaire ci-dessus. J'ai utilisé Process Monitor pour tracer l'accès au registre et j'ai découvert qu'il obtenait un accès refusé en essayant d'écrire:
3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write
J'ai contourné cela en ouvrant l'Éditeur du Registre et en donnant à Tout le monde un accès complet à
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer
. Ensuite, j'ai changé l'emplacement par défaut et supprimé l'accès Tout le monde une fois cela fait. Cela a rendu les clés supplémentaires suivantes qui n'existaient pas auparavant:DefaultData
DefaultLog
BackupDirectory
la source