SQL Server: Как уменьшить файлы FileStream?

Хорошо, я должен ответить на свой собственный вопрос еще раз. Да, это возможно и мои работы конфигурационного файла. Проблема была где-нибудь за пределами HAProxy.Моя вина.

4
задан 22 June 2012 в 15:02
2 ответа

Старые версии файлов удаляются из файлового потока с помощью процесса сборки мусора который выполняется во время процесса контрольной точки.

см. http://sqlskills.com/BLOGS/PAUL/post/FILESTREAM-garbage-collection.aspx для полного объяснения.

так что - вы прыгаете через все обруч, запустите резервную копию журнала, контрольную точку, а затем вы ... подождите, потому что глупый сборщик мусора, кажется, удаляет файлы со скоростью около 4 или 5 в секунду.

новинка 2012 года, я думаю ? это sp_filestream_force_garbage_collection ( http://msdn.microsoft.com/en-us/library/gg492195.aspx ), но я не использовал его, поэтому не могу сказать, насколько он эффективен.

3
ответ дан 3 December 2019 в 03:46

Проблема в том, что пространство не освободится, пока не завершится сборка мусора. К сожалению, нет никакого способа заставить это сделать это.

Я использовал сценарий PowerShell, чтобы перебирать файлы файлового потока и очищать их содержимое. (обратите внимание, что это удалит данные файлового потока из всех записей, если они вам не нужны). Это оставит файл, связанный с записью, на месте, но будет выглядеть так, как будто поле было пустым.

Вам нужно будет изменить путь к папке вашей файловой команды, но я, по сути, использовал именно это.

$files = Get-ChildItem -Path "C:\MSSQL\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDbRestore_9.MyDbRestore_Filestream" -Recurse -File -Exclude "*.hdr"

ForEach ($file in $files) { Clear-Content $file.FullName }
0
ответ дан 3 December 2019 в 03:46

Теги

Похожие вопросы