Otrzymuję wiele błędów z LocalDB
( błąd uruchamiania , nie mogę utworzyć bazy danych z SQL Server Management Studio, a także wiele problemów podczas próby przywrócenia kopii zapasowej) i żadna z poprawek, które znalazłem, nic nie pomaga. Wydaje mi się, że wszystkie błędy mają swoje źródło w uprawnieniach niepoprawnie skonfigurowane.
Teraz prosty skrypt do tworzenia tabeli DDL działa dobrze z SQL Server Management Studio i tworzy bazę danych w katalogu głównym mojego konta użytkownika ( jak wyjaśniono tutaj ). Jednak folder Instances (zlokalizowany D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
mimo, że podczas instalowania SQL Server Express z Advanced Services określiłem folder DATA w innym miejscu - gdzie .mdf
przechowywane są tylko standardowe pliki SQL Server Express , ale nie LocalDB
instancje) wydaje się problematyczny w odniesieniu do uprawnień (w przeciwieństwie do konta root), a także za umieszczenie moich plików DB w lokalizacji wśród moich projektów, chciałbym przenieść folder Instancje w inne miejsce. czy to możliwe? Nie znalazłem nawet odpowiedniego wpisu rejestru.
Korzystam z programu SQL Server Express 2012, a także SSMS tej samej wersji (zainstalowane najnowsze aktualizacje).
Każda pomoc będzie mile widziana.
Edycja: Wspomniana wcześniej strona Ustawienia bazy danych KookieMonster zgłosiła błąd, nie mogąc tam edytować ani zobaczyć żadnej konfiguracji. Pozwoliłem Windows Update ponownie sprawdzić dostępność aktualizacji, a niektóre aktualizacje dla SQL Server Express nie zostały zainstalowane (chociaż jestem pewien, że wcześniej wybrałem wszystko do zainstalowania), więc je zainstalowałem. Umożliwiło mi to przejście do strony ustawień.
Próbowałem skonfigurować folder główny instancji LocalDB w innym miejscu, ale dostaję błąd odmowy dostępu dla każdego folderu, który próbowałem, a mianowicie
Zmiana nie powiodła się dla ustawień „Microsoft.SqlServer.Management.Smo.ObjectKeyBase”. (Microsoft.SqlServer.Smo)
------------------------------ DODATKOWE INFORMACJE:
Wystąpił wyjątek podczas wykonywania Transact-SQL instrukcji lub partii. (Microsoft.SqlServer.ConnectionInfo)
RegCreateKeyEx () zwrócił błąd 5, „Odmowa dostępu”. (Microsoft SQL Server, błąd: 22002)
Rozumiem, nawet jeśli folder ma opcję Pełna kontrola dla wszystkich! Jeszcze bardziej zabawne jest to, że jedyny działający folder, ustawiony jako domyślny (katalog główny konta użytkownika) nie ma żadnych specjalnych uprawnień - tylko te, które ma mój użytkownik (tak jak każdy inny folder, który próbowałem ustawić). W efekcie oznacza to, że wszystkie pliki baz danych LocalDB są zapisywane w folderze głównym mojego konta.
Odpowiedzi:
Zobacz mój komentarz powyżej. Użyłem Monitora procesów do śledzenia dostępu do rejestru i stwierdziłem, że otrzymywał odmowę dostępu podczas próby zapisu:
3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write
Obejrzałem to, otwierając Edytor rejestru i dając każdemu pełny dostęp do
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer
. Następnie zmieniłem domyślną lokalizację i po zakończeniu usunąłem dostęp dla wszystkich. W ten sposób powstały następujące dodatkowe klucze, których wcześniej nie było:DefaultData
DefaultLog
BackupDirectory
źródło