0

リンクサーバー上のあるDBから別のDBへのデータの大規模なアーカイブを行っています。MS sqlserver2000からMSsqlserver 2005にコピーしています。これには、数百万のレコードをコピーしてから削除することが含まれます。これはすべて、動的スクリプトを介して行われます。このプロセスにログファイルの縮小を組み込みたいのですが、リンクサーバーでDBCCSHRINKFILEを機能させることができません。これも可能ですか?

4

1 に答える 1

1

sp_executesqlリンクサーバーを介して呼び出すことで、それを実行できるはずです。

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

ただし、特にこのスクリプトが頻繁に実行されるために自動化する必要がある場合は、ログファイルを自動的に縮小することを再考する必要があります。ログをバックアップするか、リカバリモデルをSimpleに切り替えて、スペースを再利用できるようにすることをお勧めします。(同じサイズに戻る場合、実際に縮小することで何かを達成しましたか?実際、ファイルシステムの断片化を誤って導入することで事態を悪化させる可能性があります。)

プログラムでファイルを縮小する必要がないと言っているわけではありませんが、縮小したいということは、通常、何か別の問題があることを示しています。ディスクが予想されるボリュームに対して小さすぎる、リカバリモデルが間違っているなどです。

于 2010-08-26T00:31:19.583 に答える