Поиск неиспользуемых расположений файлов mdf и ldf

#sql-server-2008 #tsql

#sql-server-2008 #tsql

Вопрос:

Мы можем найти расположения файлов mdf и ldf либо с помощью sp_helpdb, либо с помощью приведенной ниже команды.

 SELECT * FROM sys.master_files
  

Но как мы можем найти файлы ldf и mdf, которые в настоящее время не используются, т. Е. допустим, вы восстановили одну базу данных с новыми файлами mdf и ldf и не удалили старые файлы mdf и ldf.

Ответ №1:

Простого способа не существует. Вы можете сделать это вручную, выполнив поиск на сервере, или есть более сложный способ, описанный здесь:

Поиск неиспользуемых файлов данных

Комментарии:

1. Спасибо, мистер Позитив.

2. Я проголосовал за это как за полезное. Пожалуйста, подскажите мне, как принять ответ.

3. Вы должны увидеть опцию, которую следует принять в качестве ответа. Установите флажок под этим сообщением слева

4. Положительный, я пытаюсь найти экземпляр three14, но он не возвращает никаких результатов.

5. он не возвращает никаких результатов для неиспользуемых файлов mdf и ldf.

Ответ №2:

Вы можете попробовать следующий способ:

 IF OBJECT_ID(N'tempdb.dbo.#AllMDFfiles', N'U') IS NOT NULL
BEGIN   DROP TABLE #AllMDFfiles END
CREATE TABLE #AllMDFfiles (mdfFileName VARCHAR(max))

-- Will return all the .mdf and .ldf in C: drive, you can change it in ... /d C: amp;amp; dir /b....
INSERT INTO #AllMDFfiles EXEC xp_cmdshell 'cmd /c "cd /d C: amp;amp; dir /b /s | sort | findstr /c:".mdf" /c:".ldf""'

--Will return the mdfs and ldf paths which are not in sys.master_files
select mdfFileName from #AllMDFfiles
Where mdfFileName IS NOT NULL

EXCEPT

SELECT physical_name FROM sys.master_files
  

Комментарии:

1. Привет, p2k, спасибо за ваш ответ. к сожалению, его запуск занимает много времени, и он также не возвращает ожидаемые результаты.

2. ожидается, что это займет некоторое время, в зависимости от размера имеющихся у вас дисков. Не могли бы вы, пожалуйста, сообщить мне, чего не хватило из ожидаемого?

3. Я не хочу mssqlsystemresource.mdf, ldf, model, msdb и т. Д

4. Просто для добавления вы можете отфильтровать его из таблицы #AllMDFfiles следующим образом Where mdfFileName not like '%mssqlsystemresource.mdf%' OR mdfFileName not like '%model%'...

5. Похоже, это было бы сложно, а также отнимало бы много времени, поэтому я создам скрипт powershell для выполнения этого действия на 3000 серверах одновременно. Если для 1 сервера это занимает более 3 минут, означает, сколько времени мне нужно потратить.