如何确定一个包是 运行 在本地 visual studio 还是在服务器上?

How to find out if a package is run locally in visual studio or on the server?

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

上完成

找出包裹所在位置的最佳方法是什么 运行ning?

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

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

在服务器上执行时,此变量将填充存储在 SSISDB.catalog.operations(operation_id) 中的操作 ID。我的包使用审计 table 明确记录 ServerExecutionID 到与该负载关联的 insert/update/delete 指标。