【问题标题】:Powershell SMO: This method does not support scripting dataPowershell SMO:此方法不支持脚本数据
【发布时间】:2016-07-29 09:49:31
【问题描述】:

我想通过 Powershell 为 MSSQL DB 生成一个导入脚本(与 this question 相关)。 我试过这样做:

#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"

我也尝试设置输出文件选项,但这并没有改变任何东西。

你能告诉我我做错了什么吗?

谢谢!

【问题讨论】:

    标签: sql-server powershell smo


    【解决方案1】:

    根据错误,Scripter.Script 不支持脚本数据。这是documented。没有记录的是你应该使用的东西,但它是EnumScript

    $scripter.EnumScript(@($db.Tables))
    

    您必须传递表格,因为简单地编写数据库脚本不会产生任何结果(从技术上讲,数据库本身不包含数据,但它的表格却包含)。

    @() 强制将 Tables 集合转换为数组,因为这是 EnumScript 所期望的。)

    【讨论】:

    • 您好,感谢您的出色回答!这听起来可以解决我的问题。不幸的是,现在我得到了这个错误: 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 但没有架构我得到这个错误。有没有办法只编写数据脚本?而且我需要以不与外键冲突的方式对表进行排序。目前这些表是按字母顺序编写的,但是在将它们导入空数据库时会引发错误...
    • @C.M.听起来你还有一些问题......随时发布它们。评论不是解决这个问题的方法。您可能希望使问题更笼统,以防止一切都变成单独的调试会话。
    • +1,超级有用,将Script() 替换为EnumScript() 允许scripting objects as individual files 使用数据。
    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 2020-04-23
    • 2020-04-13
    • 2020-12-06
    • 2019-12-17
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多