【发布时间】: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