Як перемістити папку екземплярів SQL Server LocalDB з місця за замовчуванням?


13

Я отримую декілька помилок LocalDB( помилка запуску , не можу створити БД з SQL Server Management Studio, а також кілька проблем при спробі відновлення резервної копії), і жоден із знайдених виправлень нічого не допомагає. Мені здається, що всі помилки мають корінь у дозволах, неправильно налаштованих.

Тепер простий скрипт створення таблиць DDL відмінно працює від SQL Server Management Studio і створює базу даних у корені папки мого облікового запису користувача ( як пояснено тут ). Однак папка "Інстанції" (розміщена, D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancesнезважаючи на встановлення SQL Server Express за допомогою розширених служб), я вказав папку DATA в іншому місці - де .mdfзберігаються лише стандартні файли SQL Server Express , але не LocalDBекземпляри) проблематичним щодо дозволів (на відміну від облікового запису root), а також для того, щоб мої файли БД знаходилися в одному з моїх проектів, я хотів би перенести папку "Інстанції" в інше місце. Чи можливо це? Я навіть не знайшов відповідного запису реєстру.

Я використовую SQL Server Express 2012, а також SSMS тієї ж версії (встановлені останні оновлення).

Будь-яка допомога буде вдячна.

Редагувати: згадувана раніше сторінка Налаштування бази даних KookieMonster видала помилку для мене, не можу редагувати і не бачити там ніякої конфігурації. Я дозволив Windows Update ще раз перевіряти оновлення, і деякі оновлення для SQL Server Express не були встановлені (хоча я впевнений, що я вибрав усе для встановлення раніше), тому я встановив їх. Це дозволило мені перейти на сторінку налаштувань.

Я намагався налаштувати кореневу папку екземпляра LocalDB десь ще, але я отримую помилку в доступі, заборонену для кожної папки, яку я намагався, а саме

Не вдалося змінити параметри "Microsoft.SqlServer.Management.Smo.ObjectKeyBase". (Microsoft.SqlServer.Smo)

------------------------------ ДОДАТКОВА ІНФОРМАЦІЯ:

Виняток стався під час виконання оператора або пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx () повернув помилку 5, "Доступ заборонено." (Microsoft SQL Server, помилка: 22002)

Я отримую це, навіть якщо в папці встановлено повний контроль для всіх! Ще більше розважає єдина папка, яка працює, таку, яка встановлена ​​за замовчуванням (корінь акаунта користувача), не застосовуються спеціальні дозволи - лише ті, які має мій користувач (як і будь-яка інша папка, яку я намагався встановити). Фактично це означає, що всі файли моїх локальних баз даних зберігаються в кореневій папці мого облікового запису.


1
Що відбувається, коли ви створюєте базу даних і явно встановлюєте файли на певне місце, а не приймаєте за замовчуванням?
Аарон Бертран

1
Дякуємо за Ваш відповідь! Це працює (якщо я вибираю відповідну папку, наприклад, папку мого проекту), але дуже незручно потрібно кожного разу вказувати шлях. Я просто не можу повірити, що немає способу змінити стандартні налаштування.
П'єдоне

Що відбувається, коли ви переходите до вузла сервера, клацаєте правою кнопкою миші, властивостями, параметрами бази даних та перемикаєте розташування за замовчуванням? Чи є значення, встановлені під час встановлення, чи щось інше?
KookieMonster

У мене була та сама проблема. Я думаю, що причина зміни дозволів на папки не впливає на те, що це насправді говорить про наявність проблеми з реєстром, зокрема створення ключа реєстру (див. Останню частину: RegCreateKeyEx). На жаль, я не можу зрозуміти, який ключ він хоче створити.
daveaglick

Відповіді:


13

Дивіться мій коментар вище. Я використовував Монітор процесів для відстеження доступу до реєстру і виявив, що він отримує доступ заборонений, намагаючись написати:

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


Дякую. Зрештою я пішов іншим маршрутом, тому не можу перевірити, як це буде працювати для мене.
П'єдоне

3
Я просто спробував саме рішення, яке ви запропонували тут, і так, я отримав додаткові речі, про які ви згадали в реєстрі. Але це не скасовує та не змінює поточні значення властивостей моєї локальної бази даних. Реєстр показує потрібні значення для всіх 3-х локацій, але в SMSS все ще є місця за замовчуванням, встановленими. Використання сервера MS sql компактним 3.5 SP 1 може бути причиною такої поведінки?
користувач3840527

2
Це єдине місце, де мені вдалося знайти будь-яку інформацію про цю помилку. колись, так, зміна дозволів для цього ключа регламенту помилка відходить, але, як каже користувач3840527, SSMS все ще має вихідні місця за замовчуванням, навіть після виходу та повторного відкриття.
Ян Дюран

@Piedone, чи не могли б ви пояснити, що ви робили замість використання методу reg? Або вказати десь, що пояснює метод? Дякую
Ян Дюран

1
Помилка відходить, але місцезнаходження не змінюється
Аділ Мамедов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.