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