У меня есть ящик SQL Server 2005 с пакетом обновления 2 (sp2), где tempdb имеет либо 8 файлов данных, либо 5 файлов данных, в зависимости от того, где вы смотрите. DBCC showfilestates и sys.database_files (оба запрашиваются в tempdb) показывают 8 файлов данных (tempdev - tempdev8), однако, когда я запрашиваю sys.master_files (в master db, что также используется в графическом интерфейсе), я вижу только 5 (tempdev, tempdev5 - tempdev8). Я не могу добавить tempdev2 - tempdev4, так как получаю сообщение об ошибке, что он уже существует, и я не могу в ближайшее время перезапустить SQL Server для воссоздания tempdb.
Кто-нибудь знает: 1.) как это может случиться? 2.) что более важно, как я могу это исправить?
Спасибо,
Первый вопрос, который я должен задать: зачем вы возитесь с tempdb? У вас возникли узкие места из-за tempdb?
Если вы посмотрите на диск в соответствующем каталоге, сколько файлов вы увидите?
Возможно, в одном представлении отображается устаревшая информация. Один из сценариев состоит в том, что эти файлы были удалены из базы данных tempdb, но SQL Server не был перезапущен для удаления этих файлов, а также их записей из некоторого системного каталога. И вы не можете добавлять новые, пока старые действительно не исчезнут. Для любых разрушительных действий с tempdb (перемещение, удаление файлов и т. д.) Обычно требуется перезапуск SQL Server.
Я предполагаю, что они показывают два разных состояния системы и будут согласовывать одно, когда экземпляр перезагружается.
У нас возникли некоторые разногласия и мы выполняли некоторые упражнения по передовой практике для тестирования нагрузки на сервер и, согласно msdn.microsoft.com/en-us/library/ms175527.aspx: «Как правило, создайте один файл данных для каждого процессора на сервере».