在这里做一些假设,但我会假设这是一个 32 位与 64 位的问题。要进行验证,请在命令提示符下尝试这两个命令(Windows 键、R、cmd.exe 或开始、运行、cmd.exe)
"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
"C:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
第一个将在 32 位模式下运行您的包,而第二个将在 64 位模式下运行它。这很重要,因为您的驱动程序和您创建的任何 DSN 将仅在 32/64 位世界中可见。
修复 SSDT
一旦您确定了您需要的版本,可能是 32 位版本,您需要确保您的项目正在使用适当的运行时。右键单击您的项目并选择属性,然后导航到配置属性下的调试选项卡。
在反转 Run64BitRuntime 值后,我假设您的包将在 SSDT 内工作。
修复 SQL 代理
您将需要编辑现有的 SQL 代理作业以更改作业步骤的 bittedness。这将位于“配置”选项卡下,然后位于“高级”选项卡下。选中/取消选中 32 位运行时。
谎言和欺骗
细心的人可能会看到dtexec提供了一个/X86
选项。不要相信。获得正确位数的唯一方法是显式调用正确的 dtexec.exe 文档甚至说了这么多,但没有人阅读文档。
此选项仅由 SQL Server 代理使用。如果在命令提示符处运行 dtexec 实用程序,则忽略此选项。