1

使用 SQL Server 2008 R2 和 Powershell 2.0

我创建了一个我想在 SQL Server 数据库中设置的选项哈希,如下所示:

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

我想使用 SMO 在 SQL Server 数据库上设置这些选项。我创建了一个函数,它接受一个 SMO 数据库对象和 DatabaseOptions 哈希作为输入。

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

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

    }

}

我想将哈希中的选项设置为数据库。不确定执行此操作的最佳方法。有什么建议么?一个例子,要明确设置一个选项,你会做

$db.DatabaseOptions.AutoCreateStatistics = $true

4

2 回答 2

1

在他最后的评论中没有不尊重 Shay 尝试枚举哈希表。

function setDatabaseOptions {      
param ($db, $opts)          
   foreach ($key in $opts.Keys) { $db.DatabaseOptions.$key = $opts[$key] }
   $db.DatabaseOptions.Alter()
}
于 2012-10-19T13:01:32.800 回答
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 回答