Удалены файлы FILESTREAM, оставляемые позади после строки

Какой у вас движок БД?

В Oracle вы можете использовать MINUS set set.

В MS SQLServer 2005 и новее вы можете использовать , КРОМЕ .

19
задан Luke Girvin 10 August 2018 в 11:16
поделиться

2 ответа

Данные FILESTREAM подлежат управлению транзакциями и поэтому не удаляются мгновенно.

Вместо этого SQL Server запускает сборщик мусора, который очищает старые данные, когда он уверен, что в конечном итоге он был удален.

Из документации :

Сборка мусора FILESTREAM - это фоновая задача, которая запускается процессом контрольной точки базы данных. Контрольная точка запускается автоматически, когда создается достаточно журнала транзакций. Для получения дополнительной информации см. Электронную документацию по SQL Server 2008 , тему « КОНТРОЛЬНАЯ ТОЧКА и активная часть журнала» ( http://msdn.microsoft.com/en- us / library / ms189573.aspx ). Учитывая, что операции с файлами FILESTREAM минимально регистрируются в журнале транзакций базы данных, может пройти некоторое время, прежде чем количество сгенерированных записей журнала транзакций запустит процесс контрольной точки и произойдет сборка мусора. Если это становится проблемой, вы можете принудительно выполнить сборку мусора с помощью оператора CHECKPOINT .

24
ответ дан 30 November 2019 в 03:16
поделиться

УДАЛИТЬ ИЗ tbl_XXX DECLARE @test CHECKPOINT @test = 0

Запустите это на своем сервере sql , и вы увидите, как файл получает также удален из файловой системы.

Вы можете установить количество минут или секунд, в течение которых сборщик мусора очистит файлы из файловой системы после выполнения операции удаления.

Спасибо

харанат

1
ответ дан 30 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

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