Файлы базы данных SQL Server 2005 перемещены на недопустимый (SSD) диск. Как проверить диск или как переместить файлы обратно?

SQL 2005 32bit Developer edition, все последние сервисные пакеты

Windows Server 2003 Standard 64x, все последние обновления

Fusion IO Drive

Мы установили новую гибкую карту SSD на 80 ГБ на наш сервер разработки, запустили ALTER TABLE на базе данных tempdb (начальный размер 10 ГБ), чтобы переместить эти файлы на новый диск, остановили SQL Server, а затем попытались перезапустить его... но теперь SQL не будет начните с "Произошла ошибка, специфичная для службы: 1814". Sys.Messages имеет 1814 как "Не удалось создать базу данных tempdb. Возможно, у вас недостаточно свободного места на диске. Освободите дополнительное место на диске, удалив другие файлы на диске tempdb, а затем перезапустите SQL Server. Проверьте наличие дополнительных ошибок в журнале событий, которые могут указывать на почему файлы tempdb не могут быть инициализированы." В журнале событий приложения указано "FCB::Open: Ошибка операционной системы 5(доступ запрещен.) При создании или открытии файла" F:\TempDB ". Диагностируйте и исправьте ошибку операционной системы и повторите операцию". Служба SQL настроена для работы в качестве учетной записи домена, и эта учетная запись является локальным администратором на коробке.

Я предполагаю, что где-то должен быть настроен какой-то стелс-бит, который "включает" новый диск для использования SQL Server. Есть идеи, что это может быть?

То, что я действительно хотел бы сделать, это сказать SQL не создавать файлы tempdb на этом диске... но чтобы сделать это, вы должны запустить ALTER DATABASE, чтобы переместить файлы, но мы не можем запустить службу для выдачи этого команда. Как вы перемещаете файлы tempdb для экземпляра SQL Server 2005 (именованного) без фактического запуска экземпляра? (Это SQL 2005, поэтому я не могу просто взломать таблицы в master db, как в 2000 или 7.0.)

И нет, у нас нет резервных копий наших системных баз данных. Или это помогло бы здесь?

6 ответов

Похоже, что проблема возникла, когда администратор (не я, честный!) Ввел неправильные пути для файлов, хотя мы никогда не узнаем наверняка. Ему удалось как-то это исправить, запустив SQL с ключами -c и -f и изменив файлы в нужных местах.

(Извините за то, что вы уделили мне время. Мы получаем рецидивы, если нечасто возникают проблемы из одного и того же источника здесь. Вы бы подумали, что сейчас я пойму, что основные проблемы не являются основными для некоторых людей.)

ЧИТАТЬ. Сообщение об ошибке

Это говорит:

Журнал событий приложения имеет "FCB::Open: Ошибка операционной системы 5(доступ запрещен.) Произошел при создании или открытии файла" F:\TempDB ".

Вы можете попытаться заставить кого-то объяснить вам "Доступ запрещен";)

Я предполагаю, что где-то должен быть настроен какой-то стелс-бит, который "включает" новый диск для использования SQL Server. Есть идеи, что это может быть?

Да, их называют безопасностью. NTFS имеет довольно подробную безопасность на дисках. Пользователь, работающий с SQL Server (зависит от того, как вы его установили), пропускает необходимые разрешения на диске для создания файлов. Ничего "особенного" в SQL Server - это проблема с простыми, примитивными, обычными разрешениями файловой системы.

Служба SQL настроена для работы в качестве учетной записи домена, и эта учетная запись является локальной администратором на коробке

Что ж, помимо того, что он является локальным администратором (не имеет значения, НАСТОЯТЕЛЬНО не рекомендуется - серьезно), - проверьте, может ли эта учетная запись на самом деле создать рассматриваемый файл (или файл с аналогичным именем). Если нет (разрешения файловой системы), это проблема. Моя ставка

Тем не менее, я бы вообще вопрос с использованием SSD для файла tempdb. Серьезно тратить деньги в 99% случаев.

Что касается резервных копий системных баз данных: master, model, msdb yes. Tempdb перестраивается каждый раз при перезапуске службы ядра базы данных, поэтому я пропускаю tempdb.

Не уверены, что вы уже решили эту проблему, но здесь идет... похоже, что SQL ищет папку "F:\TempDB" для создания файлов данных, когда он перезапускается. F: \ управляет новым приводом Fusion-IO? Если да, вы уже создали папку "TEMPDB" на диске с соответствующими разрешениями для SQL, чтобы иметь к ней доступ?

SQL будет напрямую пытаться получить доступ к папке и не будет создавать папку, если она не существует... в этом, вероятно, кроется ваша проблема! Надеюсь это поможет.

С уважением Чираг

Это может быть (это большая проблема может быть =) связано с известной ошибкой, которая заключается в том, что при перемещении базы данных tempdb с помощью ALTER DATABASE сервер SQL ищет указанное свободное пространство (в вашем случае 10 ГБ) на исходном диске, а не на новом диске SSD. Таким образом, если в исходном накопителе нет 10 ГБ, он потерпит неудачу. Вам нужно сначала переместить базу данных на новый твердотельный накопитель небольшого размера (например, 1 МБ), а затем снова изменить ее размер до необходимого (10 ГБ).

Брент Озар объяснил это здесь лучше.

Звучит так, как будто вы подключили свою системную базу данных. ВСЕГДА резервируйте системные базы данных...... они могут пригодиться позже в такие времена.

http://support.microsoft.com/kb/943635

попробуйте снова запустить sql - затем просто присоедините его с помощью базы данных.

затем, конечно, убедитесь, что ОС распознает новый диск, что он отформатирован и готов к работе - и убедитесь, что ID, под которым вы запускаете sql, может получить доступ к этому диску.

надеюсь, что это помогает, удачи!

Другие вопросы по тегам