使用SQL服务器数据库table作为配置SSIS项目参数和变量

Use SQL Server database table as to configure SSIS project parameters and variables

我们想使用 SQL 服务器 table 作为 SSIS 中所有连接管理器值的来源。我们更愿意在项目级别执行此操作,因为我们的许多连接已经在项目级别。我们希望能够在项目打开时根据输入值轻松切换我们正在查看的环境。我们需要这样做的原因是因为在开发中创建我们的项目时,我们使用不同的连接,而不是将它们部署到生产环境中,并且我们使用了数百个不同的连接。我们不想在 SSIS 或 SQL 服务器代理或 SSIS 目录中切换任何内容。我们希望这些在 SQL 服务器 table.

中得到严格维护
  1. 我们如何将这些值从 SQL 服务器 table 提供给提供值或参数的变量?重申一下,最终产品将在 SQL 服务器中有 1 个 table,其中包含所有列,如 [ConnectionString][InitialCatalog][UserName][UserName][Password][HeaderRowsToSkip] 等。我们将参数化所有连接管理器,这些连接管理器的值将来自此 table。我们需要有关如何实现此目标的指导。

  2. 我希望能够在同一个 table 中同时包含 PROD 和 DEV,其中 [Environment] 列的值为 'Dev' 或 'Prod',如果可能的话,我们希望在 SSIS 中打开项目时打开一个提示,询问我们想要哪个 [Environment](一个可填写的提示),然后从 [=36] 中过滤结果=] Table 根据我们输入的内容使用 Dev 或 Prod。

如果 2) 不可能,我们将只使用单独的 tables,它们可以根据我们开发或部署的时间在连接管理器中手动切换。

除了关于安全程度的讨论(SQL 服务器 Table 中的密码,真的吗?),我使用 PowerShell 和 in 的特殊组合提出了这种请求在某些情况下,从 SQL Table 的服务器获取信息,为此,您可以使用 SQL 脚本任务编辑器:

SELECT instanceName,databaseName,DataSource
FROM meta.InfoSSIS
WHERE environmentName = ? --Input parameter corresponding to DEV, INT or PROD

此查询的输出应该提供对象,例如,User: DatabaseList,它基本上是一个 DataType: Object,它存储 SSIS 实例、数据库名称和数据源的信息。在内部,您可以有一个 ForEach 循环对象,它允许与 DatabaseList 对象交互并对其进行处理。

听起来和"Environment Variables in SSIS Catalog"完全一样!

SSIS Catalog中的"Environment"就像一个参数的配置文件,在你的例子中,你可以创建Prod/Dev环境,并将其中的变量映射到项目级别参数,这些参数是映射到项目级连接管理器。

参考: Setup Environment Variables in SQL Server Integration Services Creating a Robust SSIS Development Environment using the SSIS Catalog