首页 > 解决方案 > 如何确定一个包是在 Visual Studio 本地运行还是在服务器上运行?

问题描述

我在 SSIS 包中有一些脚本代码,在 SSDT/Visual Studio 中运行时与在服务器上运行时的工作方式不同。开发测试在 Visual Studio 中完成,生产在 SQL Server(版本 2017)上运行

找出包在哪里运行的最佳方法是什么?

我可以使用项目/包参数,但它的自动化程度较低且更容易出错。例如,忘记将参数重新设置为目标环境的正确值时。

标签: ssissql-server-data-tools

解决方案


虽然我没有测试过它可能被滥用的所有方式,但我的第一个想法是检查System::ServerExecutionID这是一个系统变量的值,它在 Visual Studio 的设计和运行时为零。

在服务器上执行时,此变量将使用存储在 SSISDB.catalog.operations(operation_id) 中的操作 ID 填充。我的包使用一个审计表,该表将该 ServerExecutionID 显式记录到与该负载关联的插入/更新/删除指标中。


推荐阅读