我已經開始嘗試使用SQL Server 2012功能LocalDb。我正在爲SMO創建一些PowerShell腳本,比如創建數據庫。要做到這一點,我有這樣的功能:LocalDb和SMO - 如何選擇放置數據庫文件的位置?
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,中密度纖維板和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)
http://blogs.msdn.com/b/sqlexpress/archive/2011/10/28/localdb-where-is-my-database.aspx – 2013-02-21 09:27:17
@ DavidBrabant:嗯,是的,它告訴我如何在SQL Management Studio中執行此操作,或者通過SQL調用來執行此操作。但在這種情況下,我不能做任何事情,我只能忍受SMO。 – carlpett 2013-02-21 09:31:13