データベースログファイルの圧縮されたカーソルを使用します

nvarchar型の@databasenameのDECLARE(100)
-カーソルの定義およびオンラインの割り当ては、すべての名前のデータベースを取得
WHERE「オンライン」master.sys.databases state_desc =からSELECTのためgetDataBaseCursorカーソル名を宣言する
前に開いておく必要がありますカーソルを使用して、カーソルがオープンされた-
オープンgetDataBaseCursorは
- fetcth文を取得したデータを使用して、ステートメントが達成シュリンク各DBで指定された変数にレコードを取得することができる
getDataBaseCursor次にには@databasenameからFETCH
一方FETCH_STATUS @@ = 0
始める
 (DECLAREの@RecoveryModelをNVARCHARを20れる)
 (100)@sql nvarchar型を宣言
 DECLAREの@logfileid INTが
 WHERE master..sysdatabasesで名= @データベース名からVARCHAR(20)とAS @ RecoveryModel =キャスト(DATABASEPROPERTYEX(名前、 'RECOVERY'を選択))
 IF @RecoveryModel <>「SIMPLE "
  開始
                EXEC( 'ALTER DATABASEの' + @ +データベース名は、 'SIMPLE SET RECOVERY')
 エンドが
 (200)で@dsql nvarchar型を宣言
 DSQL = N'select @logfileidのfile_idから= '+ @ + N'.sys.database_files WHERE type_descデータベース名=' @ SETを'LOG' ''
 ExecのDSQL @ sp_executesqlを、N '@は、INT出力をLogFileID'、@は出力LogFileID
 EXEC( '使用' + @データベース名+ 'DBCC SHRINKFILEを(' + @ + LogFileID 'を)')
@databasename INTO getDataBaseCursorから次のFETCH
エンド
- -システムがパックのリソースが占有解放するように、最後のカーソル操作では、カーソルをオフにすることを忘れないでください
CLOSE getDataBaseCursor
削除カーソル-
DEALLOCATE getDataBaseCursorを

ます。https://www.cnblogs.com/tutuyforever/p/4797146.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33895016/article/details/94682063