【发布时间】:2017-09-28 21:23:36
【问题描述】:
Visual Studio 2015 更新 3 14.0.25341.01
SQL Server 数据工具 14.0.61707.300
SQL Server 2016 13.0.4435.0
我最近在 VS2015 中收到一条消息,指出 SQL Server Data Tools 的更新可用。我决定下载并安装它,现在我部署到 SQL 2016 的包不再工作。
在安装更新之前,我不知道我的 SQL Server Data Tools 版本是什么,但我知道在我的 SSIS 项目中,我现在看到了 SQL 2017 的 TargetServerVersion 选项(以前只能转到 SQL 2016) .
我确认我的项目(这是我用于所有 SSIS 包的项目,自我们部署 SQL 2016 以来一直使用该项目)仍设置为 TargetServerVersion SQL 2016。该项目设置为项目部署模式,我一直在部署通过打开一个包,然后单击 File -> Save Copy of filename.dtsx As...,然后部署到目标 SQL。除了我升级 SQL Server Data Tools 之外,我们的环境没有任何变化。
这是我尝试运行包时收到的错误:
Executed as user: DOMAIN\ProxySvc.
Microsoft (R) SQL Server Execute Package Utility
Version 13.0.1601.5 for 64-bit
Copyright (C) 2016 Microsoft. All rights reserved.
Started: 3:32:33 PM
Error: 2017-09-28 15:32:33.37
Code: 0xC0010018
Source: Package_Name
Description: Error loading value "<DTS:ConnectionManagers xmlns:DTS="www.microsoft.com/SqlServer/Dts"><DTS:ConnectionManager DTS:refId="Package.ConnectionManagers[SERVER A]" DTS:CreationName="OLEDB" DTS:DTSID="{E5D397C2-477A-4E04-B930-613DDE14A054}" DTS:ObjectName="SERVER A"><DTS:ObjectData>" from node "DTS:ConnectionManagers".
End Error
Could not load package "\Maintenance Plans\Package_Name" because of error 0xC0010014.
Description: One or more error occurred. There should be more specific errors preceding this one that explains the details of the errors. This message is used as a return value from functions that encounter errors.
Source:
Started: 3:32:33 PM Finished: 3:32:33 PM Elapsed: 0.109 seconds.
The package could not be loaded.
The step failed.
但是,如果我使用本地安装的 SQL 2016 Dev Edition 中的 DtUtil 部署这些包,它们将起作用。例如:
"C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\dtutil" /FILE "C:\filename.dtsx" /DestServer SERVERNAME/INSTANCE /Encrypt SQL;"Maintenance Plans\Package_Name";2;PKG_PA$$
还有其他人对此有疑问吗?我不可能是唯一一个以这种方式部署包的人在部署到 VS2015 和 SQL Server Data Tools 时突然停止工作。
我还为this issue 打开了一个连接。
编辑:我尝试了 Visual Studio 2017 和 SQL Server Data Tools 的预览版。我得到同样的问题。包部署正常,但包不会运行。
编辑2:如果我创建一个空包,它会成功运行(允许什么都不做)。如果我创建一个只有一个 OLEDB 连接的空包,它会失败并显示上面的消息。它也会失败并显示相同的消息,其中包含一个空包和一个 ADO.NET 连接。
编辑 3: 我部署了两个包。一个使用 SSDT(无法在服务器上运行并出现上述错误),另一个使用 DTUTIL 可以在服务器上正常执行。除了它们被复制到服务器的方式之外,这些包完全相同。然后我使用 DTUTIL 将包复制回我的机器并进行比较。除了 DTS:LastModifiedProductVersion 版本差异之外,唯一的其他变化是 EncryptionMethod 算法。使用 SSDT 部署的那个说:
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
以及使用 DTUTIL 部署的那个:
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
显然 Salt、IV 和 CipherValues 不同,但我想知道 SSDT 在部署时应用的加密是否会导致问题。
【问题讨论】:
-
将 SSDT 更新到最新版本。这是一个独立的免费产品。 The latest version for VS 2015 is 17.2
-
我已经这样做了。请查看我的版本号和您发布的链接中的版本号。他们匹配。
-
我喜欢 SSDT 版本号。在 VS 2017 上,SSIS 工具版本是 .... 一个空字符串,但至少它可以工作。
-
错误代码为0xC0010014。谷歌搜索至少有一个答案提到running on the 32 vs 64-bit runtime。您不能混合使用不同位数的 OLEDB 和运行时。
-
是的。我已经尝试了使用 Google 时出现的所有解决方案,这就是我在这里发帖的原因。
标签: sql-server visual-studio-2015 ssis sql-server-2016 sql-server-data-tools