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)