У меня есть база данных SQL Server, где у меня есть файлы данных и журналов, хранящиеся на внешнем USB-накопителе. Я переключаю внешний диск между моей основной машиной разработки в своем офисе и ноутбуком, когда не в моем офисе. Я пытаюсь использовать sp_detach_db и sp_attach_db при перемещении между настольными компьютерами и ноутбуками. Я нахожу, что это работает нормально на рабочем столе - я могу отсоединить и повторно подключить базу данных там никаких проблем. Но на ноутбуке я не могу повторно подключить базу данных (база данных была изначально создана на ноутбуке, и там был первый отрыв). Когда я пытаюсь подключиться к ноутбуку, я получаю следующую ошибку:Заблокированные файлы данных SQL Server
Невозможно открыть физический файл «p: \ SQLData \ AppManager.mdf». Ошибка операционной системы 5: «5 (ошибка не найдена)»
Я нахожу много ссылок на эту ошибку, заявляя, что это проблема с разрешениями. Поэтому я пошел по этому пути и убедился, что учетная запись службы SQL Server имеет соответствующие разрешения. Я также создал новую базу данных на этом же пути и смог успешно отсоединить ее и снова подключить. Поэтому я уверен, что разрешения не являются проблемой.
Дальнейшие исследования показывают, что я не могу переименовать, скопировать или переместить файлы данных, поскольку Windows считает, что они заблокированы - даже когда служба SQL Server остановлена. В Process Explorer не обнаружен процесс блокировки файлов.
Как узнать, что блокирует файлы и их разблокировать.
Я проверял, что базы данных не отображаются в SSMS - поэтому SQL Server по-прежнему не считает, что они существуют.
Update 18/09/2008
Я попробовал все из предложенных ответов на сегодняшний день, но безуспешно. Однако попытки этих предложений помогли прояснить ситуацию. Я могу проверить следующее:
- Я могу успешно отсоединить и подключить базу данных только тогда, когда внешний диск подключен к серверу, что копия базы данных восстанавливаются - эффективно сервером, где база данных «созданный» - позволяет называть это «исходным сервером».
- Я могу перемещать, копировать или переименовывать файлы данных и журналов после отсоединения базы данных, а внешний диск по-прежнему подключен к исходному серверу.
- Как только я перемещаю внешний диск на другую машину, файлы данных и журналов блокируются, хотя два инструмента, которые я пробовал - Process Explorer и Unlocker, не находят никаких блокирующих ручек, прикрепленных к файлам.
NB. После отсоединения базы данных я попытался как остановить службу SQL Server, так и закрыть исходный сервер перед перемещением внешнего накопителя - все равно без успеха.
На этом этапе все, что я могу сделать для перемещения данных между настольным компьютером и ноутбуком, - это сделать резервную копию данных на внешний диск, переместить внешний диск, восстановить данные из резервной копии. Работает нормально, но занимает немного больше времени, поскольку база данных имеет разумный размер (1 ГБ). Во всяком случае, это единственный выбор, который у меня есть на этом этапе, хотя я пытался избежать того, чтобы идти по этому пути.
Помогает ли перезапуск процесса проводника или службы SQL? – 2008-09-17 00:14:20