【问题标题】:SSIS package with Script task does not work when deployed programmatically以编程方式部署时,带有脚本任务的 SSIS 包不起作用
【发布时间】:2019-04-28 08:16:06
【问题描述】:

我遇到了一个奇怪的问题,即如果项目部署以自动化方式(从 C# 或使用 PowerShell)完成,作为 ISPAC 文件的一部分部署的 SSIS 包的脚本组件将失败。在服务器上执行包时,使用 Visual Studio 中的 Integration Services 部署向导部署完全相同的项目不会引发任何错误。

但是,在执行使用 C#(使用 Microsoft.SqlServer.Management.IntegrationServices)部署的包时,我收到了关于系统命名空间中缺少的东西的各种错误,例如:

DFT 加载 STG_ETL_TEST_STAGING_CDC:错误:CS0234 - 类型或 命名空间名称“ComponentModel”在命名空间中不存在 “系统”(您是否缺少程序集参考?), 属性\Resources.Designer.cs, 59, 25

DFT 加载 STG_ETL_TEST_STAGING_CDC:错误:CS0234 - 类型或 命名空间名称“CodeDom”在命名空间“System”中不存在(是 您缺少程序集参考?),Properties\Resources.Designer.cs, 25、21

我导出了已部署的包并比较了它们的文件大小。我注意到手动部署项目的 ISPAC 比以编程方式部署的项目稍大。部署向导对自动化部署期间未发生的项目做了什么?

为了排除它与我的 C# 代码有关,我还尝试了 Microsoft docs 中的以下 PowerShell 脚本。但是,它确实使用了与我在代码 (Microsoft.SqlServer.Management.IntegrationServices) 中使用的程序集相同的程序集,并且部署的包也存在相同的问题。

【问题讨论】:

  • 您是否有可能将 SQL Server 2017 的二进制文件用于 .NET 代码,并且 isdeploymentwizard.exe 是针对 2016 年的? WHERE isdeployment 可以显示当前路径,第一个可能是从 VS 启动的路径(除非您指定了自定义目标)
  • @billinkc SQL Server 是 Azure SQL Server(版本号 12) - 我相信版本号对应于程序集版本号?我调整了 PowerShell 脚本以显式加载程序集 Microsoft.SQLServer.Management.IntegrationServices, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91,但问题仍然存在。
  • PS: VS 使用的部署向导是在C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn找到的那个
  • 版本 12 的二进制文件与 SQL Server 2012 相关联。版本 14 是 SQL Server 2016。

标签: c# sql-server powershell ssis


【解决方案1】:

我应该提到该项目是使用 Biml 生成的。原来问题与二进制文件无关,而是与 Biml 编译器创建的 ISPAC 文件有关。再次使用 VS 构建项目(使用devenv.com theproject.dtproj -build)为我解决了这个问题并允许对项目进行程序化部署。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2023-04-09
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多