Можно ли сжать файл журнала на связанном сервере с помощью DBCC SHRINKFILE? - PullRequest
0 голосов
/ 18 августа 2010

Я делаю большой архив данных из одной БД в другую БД на связанном сервере. Я копирую с MS SQL Server 2000 на MS SQL Server 2005. Это включает в себя копирование миллионов записей, а затем их удаление. Все это происходит через динамический скрипт. Я хотел бы включить сжатие файла журнала для этого процесса, но я не могу заставить DBCC SHRINKFILE работать для связанного сервера. Это вообще возможно?

1 Ответ

1 голос
/ 26 августа 2010

Вы можете сделать это, позвонив по номеру sp_executesql через связанный сервер:

EXEC [LINKED_SERVER].MyDatabase.dbo.sp_executesql
    @statement = N'DBCC SHRINKFILE(''LogFileName'',0)'

Возможно, вам следует переосмыслить автоматическое сжатие файла журнала, особенно если этот сценарий будет запускаться так часто, что вам нужно его автоматизировать. Вам лучше сделать резервную копию журнала или переключить модель восстановления на Simple, чтобы можно было повторно использовать пространство. (Если он вырастет до того же размера, действительно ли вы достигли чего-либо, сократив его? На самом деле, вы можете ухудшить ситуацию, непреднамеренно введя фрагментацию файловой системы.)

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

...