1

SQL Server2008R2とPowershell2.0の使用

次のように、SQLServerデータベースに設定するオプションのハッシュを作成しました。

$dbopts = @{
    "AutoCreateStatistics"=$true;
    "AutoUpdateStatistics"=$true;
    "AutoShrink"=$false;
    };

SMOを使用してSQLServerデータベースにこれらのオプションを設定したいと思います。SMOデータベースオブジェクトとDatabaseOptionsハッシュを入力として受け入れる関数を作成しました。

function setDatabaseOptions {
    param ($db, $opts);

    foreach ($opt in $db.DatabaseOptions) {
        # what to write here?

    }

}

ハッシュのオプションをデータベースに設定したい。これを行うための最良の方法がわかりません。助言がありますか?たとえば、オプションを明示的に設定するには、次のようにします。

$db.DatabaseOptions.AutoCreateStatistics = $true

4

2 に答える 2

1

データベースのプロパティに正しいハッシュ項目を割り当てます。私はSMOを使用していませんが、更新を適用するためのメソッドを呼び出す必要がある場合もあります。

function setDatabaseOptions {

    param ($db, $opts)

        $opt = $db.DatabaseOptions

        $opt.AutoCreateStatistics = $opts['AutoCreateStatistics']
        $opt.AutoUpdateStatistics = $opts['AutoUpdateStatistics']
        $opt.AutoShrink= $opts['AutoShrink']    
}
于 2012-10-19T11:52:47.157 に答える
1

彼の最後のコメントのようにシェイを軽視することなく、ハッシュテーブルを列挙してみてください。

function setDatabaseOptions {      
param ($db, $opts)          
   foreach ($key in $opts.Keys) { $db.DatabaseOptions.$key = $opts[$key] }
   $db.DatabaseOptions.Alter()
}
于 2012-10-19T13:01:32.800 に答える