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但没有模式我得到这个错误。有没有办法只是脚本的数据?我需要以不与外键冲突的方式排列表格。目前这些表格是按字母顺序编写的,但是当将它们导入空数据库时会引发错误... –