微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS 的 DtExec 32 位与 64 位混淆

如何解决SSIS 的 DtExec 32 位与 64 位混淆

这个问题之前有人问过不同的口味,但我找不到满意的答案。

我们是一家基于 MS 的商店,我们拥有大量 sql 2016 数据库。我们也经常使用 SSIS 2016,在我的领域,我们专门使用目录 (SSISDB) 部署模型。

我们的许多 SSIS ETL 不仅仅是简单的加载或提取。它们是每晚批次的一部分。它们在调度程序上运行。一个典型的批次可能是这样的

  • 运行 SSIS 项目 A
  • 拿起A制作的一些文件
  • ftp 到某个地方并将原件存档
  • 拿起一些其他文件并将它们放在某处
  • 然后运行 ​​SSIS 项目 B 处理上述内容

我们的批处理脚本通常是 python,我们使用 DtExec 来运行 ETls。我们的 Python 脚本所在的调度器机器永远不会与 SSISDB 或 SSIS 机器相同。我们使用 DtExec 调用远程数据库服务器并调用 ETL。

调度器机器本身不是数据库服务器,也没有安装 sql 2016,只安装了 SSMS 2016,它为我们提供了 32 位 DtExec。

但现在看来我还需要 64 位 DtExec,而且如果我也在调度程序框上安装集成服务,我似乎只会得到它。

这是一个问题,因为许可,而且我不希望在那里运行另一个 SSIS 服务实例。无论如何它不会被用于任何事情。我只想要像 DtExec 这样的 64 位客户端工具。

问题基本上是如何将 64 位 DtExec 安装到不是 sql Server 甚至不是集成服务服务器的机器上。如何在简单的客户端机器上获得 64 位 DtExec?

编辑: 在另一个注意事项中,我是否真的需要 64 位 DtExec 才能在 64 位服务器上以 64 位模式运行 SSIS?那肯定是远程调用,DtExec 客户端是在多少位下编译的应该无关紧要?

感谢阅读

卡斯滕

解决方法

根据MS Docs on DTExec,可以产生64位模式下运行包,需要64位版本的DtExec。
但是,这不是从 SSISDB 运行 SSIS 包的唯一方法。您还可以使用 T-SQL 命令开始执行包(请参阅 catalog.start_executionT-SQL commands)。这种方式根本不需要DtExec,你选择32位或64位环境,catalog.create_execution@use32bitruntime
一些代码示例

EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Child1.dtsx',@execution_id=@execution_id OUTPUT,@folder_name=N'TestDeply4',@project_name=N'Integration Services Project1',@use32bitruntime=False,@reference_id=Null  
Select @execution_id  

DECLARE @var0 sql_variant = N'Child1.dtsx'  
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,@object_type=20,@parameter_name=N'Parameter1',@parameter_value=@var0  

DECLARE @var1 sql_variant = N'Child2.dtsx'  
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,@parameter_name=N'Parameter2',@parameter_value=@var1  

DECLARE @var2 smallint = 1  
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,@object_type=50,@parameter_name=N'LOGGING_LEVEL',@parameter_value=@var2  

EXEC [SSISDB].[catalog].[start_execution] @execution_id  
GO

对于相关的 T-SQL 示例,您始终可以在 SSMS 中使用执行包脚本功能。

关于此的 good article,包含一个代码示例,用于检查包内的环境类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。