Я получаю несколько ошибок LocalDB
( ошибка при запуске , не могу создать базу данных из SQL Server Management Studio, а также несколько проблем при попытке восстановить резервную копию), и ни одно из найденных исправлений не помогает. Мне кажется, что все ошибки имеют свои корни в разрешениях, неправильно настроенных.
Теперь простой сценарий создания таблицы DDL отлично работает в SQL Server Management Studio и создает базу данных в корне папки моей учетной записи пользователя ( как описано здесь ). Однако папка Instances (расположенная в папке D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
несмотря на то, что при установке SQL Server Express с расширенными службами я указала папку DATA в другом месте, где .mdf
хранятся только стандартные файлы SQL Server Express , но не LocalDB
экземпляры), представляется проблематичной в отношении разрешений (в отличие от учетной записи root), а также для того, чтобы мои файлы БД находились в одном месте среди моих проектов, я хотел бы переместить папку Instances в другое место. Это возможно? Я даже не нашел соответствующую запись в реестре.
Я использую SQL Server Express 2012, а также SSMS той же версии (установлены последние обновления).
Любая помощь будет оценена.
Редактировать: Страница настроек базы данных, упомянутая ранее KookieMonster, вызвала ошибку для меня, так как я не смог ни отредактировать, ни увидеть какую-либо конфигурацию. Я позволил Центру обновления Windows снова проверять наличие обновлений, и были некоторые обновления для SQL Server Express, которые не были установлены (хотя я уверен, что я выбрал все для установки раньше), поэтому я установил их. Это позволило мне перейти на страницу настроек.
Я пытался настроить корневую папку экземпляра LocalDB в другом месте, но я получаю сообщение об ошибке отказа в доступе для каждой папки, которую я пробовал, а именно
Не удалось изменить настройки «Microsoft.SqlServer.Management.Smo.ObjectKeyBase». (Microsoft.SqlServer.Smo)
------------------------------ ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Возникла исключительная ситуация при выполнении оператора или пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
RegCreateKeyEx () вернул ошибку 5, «Доступ запрещен». (Microsoft SQL Server, ошибка: 22002)
Я получаю это, даже если в папке есть Полный контроль для всех! Еще более забавно, что единственная папка, которая работает, та, которая установлена по умолчанию (корень учетной записи пользователя), не имеет специальных разрешений - только те, которые есть у моего пользователя (как и любая другая папка, которую я пытался установить). Фактически это означает, что все файлы моих баз данных LocalDB сохраняются в корневой папке моей учетной записи.
Ответы:
Смотрите мой комментарий выше. Я использовал Process Monitor для отслеживания доступа к реестру и обнаружил, что при попытке записи получено «Отказано в доступе»:
3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write
Я справился с этим, открыв редактор реестра и предоставив всем полный доступ к
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer
. Затем я изменил расположение по умолчанию и удалил доступ Все, как только это было сделано. Это сделало следующие дополнительные ключи, которых не было раньше:DefaultData
DefaultLog
BackupDirectory
источник