Каков наилучший способ удалить большой двоичный столбец из базы данных SQL Server 2005, но при этом минимизировать размер полученных файлов .mdf и .ldf?Удаление больших объемов данных в SQL Server 2005
Наше приложение позволяет пользователям загружать свои документы. Они хранились как BLOB в столбце в таблице . Со временем эта таблица увеличилась до> 90% от общего размера базы данных.
С тех пор мы изменили ситуацию и больше не нужно хранить документы, подобные этому. Теперь я хотел бы обнулить данные в этом столбце и вернуть базу данных к управляемому размеру (дисковое пространство стоит немного дороже). Будучи устаревшим приложением, я хотел бы поддерживать совместимость и не изменять структуру таблицы.
Наиболее очевидный способ сделать что-то вроде:
update documents set content = 0x0
Но это, кажется, удар .ldf из огромной суммы.
Адресация конкретного симптома, я мог бы тогда или усечение журнала (backup log mydb with truncate_only
) или, возможно, попробовать dbcc shrinkdatabase(mydb)
или dbcc shrinkfile(mydb_log, 20)
, но я слышал, это может вызвать неприятные фрагментации и т.д., и не может быть лучше в долгосрочной перспективе.
Было бы лучше создать вторую таблицу со всеми, кроме контентом, скопировать данные через, а затем truncate
первый?
Любые мысли будут оценены.
Приветствие
и обрезать журнал – jle
и воссоздать столбец (с нулями), если вам нужно где-либо еще – pkmiec