2011年11月18日金曜日

◆SQLServer データベースの復旧モデルを更新する

SharePointを入れると様々なDBがインストールされる。
復旧モデルが「完全」になってたりするとログの容量が増え続けて困ってしまう。

評価・テスト用だったりすると「完全」である必要はないので「単純」に変更する。
評価用にスクラップ&ビルドしてたりすると何度もやるはめになるのでスクリプトにしてみた。

001
002
003
004
005
006
007
008
009
010
011
012
013
014

$Instance = ".\sqlexpress"
[void][Reflection.Assembly]::
LoadWithPartialName(
                                 
"Microsoft.SqlServer.Smo") 
#Full,BulkLogged,Simple
$cModel = [Microsoft.SqlServer.Management.Smo.RecoveryModel]::Simple

$server = 
New-Object Microsoft.SqlServer.Management.Smo.Server($Instance)
$server.ConnectionContext.LoginSecure = $true 
$server.Databases | 
  ?{-not $_.IsSystemObject} | 
  ?{$_.RecoveryMode -ne $cModel } | 
  %{$_.RecoveryModel = $cModel ; $_.Alter()}
"Done"

プロパティを変更した後にAlterメソッドを呼んであげないと変更が反映されないようだ。

0 件のコメント:

コメントを投稿