#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 минут, означает, сколько времени мне нужно потратить.