0

SQL Server 2012 機能 LocalDb の実験を開始しました。データベースの作成など、作成するインスタンスに対して SMO を使用して PowerShell スクリプトを実行しています。これを行うには、次の関数があります。

Function New-Database {
    Param(
        $server,
        $databaseName
    )
    $serverHandle = New-Object Microsoft.SqlServer.Management.Smo.Server($server)
    if($serverHandle.Databases.Name.Contains($databaseName)) {
        throw "Database $databaseName already exists"
    }

    $databaseHandle = New-Object Microsoft.SqlServer.Management.Smo.Database($serverHandle, $databaseName)
    $databaseHandle.Create()
}

LocalDb を使用すると、mdf ファイルと ldf ファイルが に作成されC:\Users\<username>\ます。これをオーバーライドしたいのですが、方法がわかりません。$databaseHandleオブジェクトにはプロパティがありますが、それPrimaryFilePathは読み取り専用です。それは非常に単純なはずのことのように思えますが、方法がわかりません...

以下の回答に基づいて、必要なPowershell 呼び出しを次に示します。

$fileGroup = New-Object Microsoft.SqlServer.Management.Smo.FileGroup($databaseHandle, "PRIMARY")
$dataFile = New-Object Microsoft.SqlServer.Management.Smo.DataFile($fileGroup, "DataFile", $filePath)
$fileGroup.Files.Add($dataFile)
$databaseHandle.FileGroups.Add($fileGroup)
4

1 に答える 1

1

SMOフォーラムのこのスレッドに答えが含まれていると思います。これをSQLPowerShell構文に変換する必要があります(現時点では、これはSMOの単なるラッパーであると思います)。

VBScriptスニペットは次のとおりです。

databaseHandle.FileGroups.Add(New FileGroup(db, "PRIMARY"))
databaseHandle.FileGroups(0).Files.Add(
    New DataFile(db.FileGroups(0), "TestName", "D:\SqlBancos\Teste\Teste1.mdf"))
于 2013-02-21T18:36:13.920 に答える