【问题标题】:Package Execution via POWERSHELL通过 POWERSHELL 执行包
【发布时间】:2017-09-09 09:46:54
【问题描述】:

我正在尝试通过 Powershell 执行 SSIS 包。我还对其进行了一些参数设置。我使用以下命令:

DTExec /ISSERVER "\SSISDB\folderB\Integration Services Project17\Package.dtsx" /SERVER "." /Envreference 2 /Par "$Project::ProjectParameter(Int32)";1 /Par "Parameter(Int32)";21 /Par "CM.sqlcldb2.SSIS_repro.InitialCatalog";ssisdb /Par "$ServerOption::SYNCHRONIZED(Boolean)";True

我用我需要的参数替换了参数,当我尝试执行它时,它告诉我参数CM.sqlcldb2.SSIS_repro.InitialCatalog 不存在。我在互联网上的某个地方发现此参数与Connection Manager 有关。但是哪个连接管理器?有人知道那个参数的含义吗?

提前致谢

【问题讨论】:

    标签: sql-server powershell ssis


    【解决方案1】:

    运行 DTExecUI(dtexec 的 GUI)并在其中打开 SSIS 包。

    在 DTExecUI GUI 中,您能看到 CM.sqlcldb2.SSIS_repro 作为连接管理器存在吗?

    DTExecUI 将使您能够手动编辑所有可编辑的参数/配置。

    一旦您修改了所有参数/配置,DtExecUI 的最后一部分称为“命令行”将为您提供生成的命令行,然后可以将其传递给“dtexec”。您可以复制并粘贴它并在 PowerShell(或其他任何地方)中使用。

    此外,参数有一些双引号,其中包含以$ 开头的单词。 PowerShell 将尝试将这些作为变量进行插值。

    试试这个:

    $dtexecParams = @(
        '/ISSERVER',     "\SSISDB\folderB\Integration Services Project17\Package.dtsx"
      , '/SERVER',       '.'
      , '/Envreference', '2'
      , '/Par',          '"$Project::ProjectParameter(Int32)";1'
      , '/Par',          '"Parameter(Int32)";21'
      , '/Par',          '"CM.sqlcldb2.SSIS_repro.InitialCatalog";ssisdb'
      , '/Par',          '"$ServerOption::SYNCHRONIZED(Boolean)";True'
    )
    @dtexec $dtexecParams
    

    ...我将需要双引号的参数用单引号括起来,以停止插值。我还创建了一个参数数组以传递给dtexec 命令,因此更容易查看传入的内容。

    【讨论】:

    • 感谢您对 TechSpud 的答复。我运行 DTExecUI,它为我提供了无法找到包的包源选项。我无法解决 SSIS 目录上的包。我该怎么做?
    • 不确定。尝试使用 SSMS 浏览集成服务目录,然后右键单击包并选择配置。这将向您显示连接管理器和可用属性。会不会是您尝试设置的连接类型没有 InitialCatalog 属性?
    猜你喜欢
    • 2019-05-02
    • 2011-09-19
    • 2014-10-11
    • 2015-04-08
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多