0
我想通過Powershell爲MSSQL DB生成導入腳本(與this question相關)。 我試着這樣做:Powershell SMO:此方法不支持腳本數據
#Set-ExecutionPolicy RemoteSigned
$DB_NAME = "<<dbName>>"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
$srv = new-object "Microsoft.SqlServer.Management.SMO.Server" "<<server>>"
$conContext = $srv.ConnectionContext
$conContext.LoginSecure = $false
$conContext.Login = "<<user>>"
$conContext.Password = "<<password>>"
$srv = new-object Microsoft.SqlServer.Management.Smo.Server($conContext)
$srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.View], "IsSystemObject")
$db = $srv.databases[$DB_NAME]
$scripter = new-object "Microsoft.SqlServer.Management.Smo.Scripter" $srv
$scripter.Options.ScriptSchema = $false
$scripter.Options.ScriptData = $true
$scripter.Options.ScriptDrops = $false
$scripter.Script($db)
但是執行,這將引發一個錯誤:
"This method does not support scripting data"
我也試着設置輸出文件的選項,但是這不會改變任何東西。
你能告訴我我做錯了什麼嗎?
謝謝!
你好,感謝你的偉大的答案!這聽起來像可以解決我的問題。不幸的是,現在我得到這個錯誤:Ausnahme beim Aufrufen von「EnumScript」mit 1 Argument(en):「Script'failed for Server'xxx'。」 In ... + $ scripter.EnumScript(@($ db.Tables) ) + ~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:FailedOperationException您是否知道是什麼原因導致此異常?問候! –
不,它與'EnumScript'本身無關 - 我知道,因爲我驗證了這個代碼對可訪問的數據庫實例有效。 –
嗨 - 我想出了什麼錯了:我想用來設置$ scripter.Options.ScriptSchema = $ false但沒有模式我得到這個錯誤。有沒有辦法只是腳本的數據?我需要以不與外鍵衝突的方式排列表格。目前這些表格是按字母順序編寫的,但是當將它們導入空數據庫時會引發錯誤... –