-1

我们正在从 SQL Server 2005 系统迁移现有系统。该系统的一个组件是使用 VS2005 创建的 SSIS 项目。

我们在一月份安装了 SQL Server 2016 标准版。数据库数据文件位于 E: 驱动器上。

我们在一月份安装了 Visual Studio 2017,但当时没有使用它。

由于在本地运行 VS2019 并使用 VPN 访问网络时文件访问出现问题,我们最近在 db 服务器上安装了 Visual Studio 2019。

我们刚刚从 SQL Server 安装程序安装了 SSIS,意识到我们缺少该组件。

作为所有这些安装的结果,dtinstall.exe 和 dtexec.exe 位于以下文件夹中:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\SSIS\140\Binn

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn

E:\Program Files\Microsoft SQL Server\130\DTS\Binn

E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn

E:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn

E:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn

E:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn

dtexecui.exe 仅在以下文件夹中找到:

E:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn

这两个 Visual Studio 2019 包是在服务器上的 C: 驱动器中开发的。它们在 VS 中正确编译和执行。

每个包都有 3 个配置文件(用于测试、预览和生产场景)。

由于安装部署实用程序时发现的兼容性问题,将 2 个包的 TargetServerVersion 配置为“SQL Server 2016”。

使用传统包部署模型创建了部署实用程序。

将部署实用程序文件从 C:...\Deployment 文件夹复制到服务器上 F: 驱动器上的文件夹。

Ran dtinstall.exe 在服务器上安装软件包。它在数据库数据文件所在的同一驱动器上创建了文件:

E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Packages\Web 站点同步 SSIS 项目。

使用 dtexecui.exe 执行包,如上所述,只能在 \150\Binn 文件夹中找到。

这是 dtexecui 生成的 DTexec.exe 命令行:

/FILE "\"E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Packages\Web Site Synch SSIS Project\Products Upload.dtsx\"" /DECRYPT /CONFIGFILE "\"E:\Program Files ( x86)\Microsoft SQL Server\130\DTS\Packages\Web Site Synch SSIS Project\Test Products.dtsConfig\"" /CHECKPOINTING OFF /REPORTING EW

执行时(从 dtexecui 中),它在最后一步中给出错误,该步骤执行 WZZIP.exe 以压缩在前面步骤中创建的平面文件。

WinZip 步骤中的 dtexecui 错误

错误消息说:“错误:要在 SQL Server Data Tools 之外运行 SSIS 包,您必须安装标准版的集成服务或更高版本。”

我并没有真正理解这条信息:我们确实有 SQL Server 标准版。我假设为此的 SQL Server 安装程序将安装集成服务的标准版。

我研究了这个错误,发现它通常是由于版本和工具版本之间的不兼容造成的,但是我不知道如何在我的场景中解决这个问题。dtexecui 错误消息没有给出任何提示。

4

1 回答 1

1

在仔细记录我在此处发布的问题的过程中,我意识到问题可能是因为我使用的是 dtexecui.exe 的 \150\ 版本,它可能正在运行 dtexec.exe 的 \150\ 版本,并且是不兼容。

我复制了 dtexecui 生成的命令字符串,然后使用 dtexec 的 \130\ 版本运行它。它运行没有错误。

这是命令提示符会话:

E:>cd E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn

E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn>dtexec /FILE "\"E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Packages\Web Site Synch SSIS Project\ Products Upload.dtsx\"" /DECRYPT /CONFIGFILE "\"E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Packages\Web Site Synch SSIS Project\Test Products.dtsConfig\"" /CHECKPOINTING OFF /报告电子战

Microsoft (R) SQL Server 执行包实用程序

32 位版本 13.0.5026.0

版权所有 (C) 2016 微软。版权所有。

输入解密密码:

开始时间:下午 2:44:57

警告:2020-04-29 14:45:01.31

代码:0x80049304

来源:单元类型 SSIS.Pipeline

说明:警告:无法打开全局共享内存以与性能 DLL 进行通信;数据流性能计数器不可用。要解决此问题,请以管理员身份或在系统控制台上运行此软件包。

结束警告

DTExec:包执行返回 DTSER_SUCCESS (0)。

开始时间:下午 2:44:57

完成时间:下午 2:45:06

已用时间:9.344 秒

E:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn>

现在我知道在我的调用例程(存储过程和其他应用程序)中,我需要调用这个特定版本的 dtexec.exe。

我真的希望这对某人有帮助!

于 2020-04-30T16:54:51.277 回答