使用SQL Server数据库表作为配置SSIS项目参数和变量

时间:2018-12-26 21:55:14

标签: sql-server parameters ssis ssis-connection-manager

我们想使用SQL Server表作为SSIS中所有连接管理器值的源。我们宁愿在项目级别执行此操作,因为我们的许多连接已经在项目级别进行。当项目打开时,我们希望能够根据输入值轻松切换正在查看的环境。我们之所以需要这样做,是因为在开发人员中创建项目时,我们使用的连接与将它们部署到产品中时使用的连接不同,并且我们使用了数百种不同的连接。我们不需要在SSIS或SQL Server代理或SSIS目录中进行任何切换。我们希望将它们严格保留在SQL Server表中。

  1. 如何将这些值从SQL Server表中馈送到变量中以提供值或参数?重申一下,最终产品在SQL Server中将有1个单个表,其中包含[ConnectionString][InitialCatalog][UserName][UserName][Password],{ {1}}等。我们将参数化所有连接管理器,这些连接管理器的值将从该表中获取。我们需要有关如何实现此目标的指导。

  2. 我希望能够在一个具有[HeaderRowsToSkip]列的表中包含PROD和DEV,该列的值为'Dev'或'Prod',如果可能的话,我们希望在SSIS中打开项目时,系统会打开一个提示,询问我们想要哪个[Environment](可填充的提示),该提示会依次过滤SQL表的结果以根据输入的内容使用Dev或Prod。 / p>

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

2 个答案:

答案 0 :(得分:1)

这听起来与“ SSIS目录中的环境变量”完全一样!

SSIS目录中的“环境”就像参数的配置文件一样工作,在这种情况下,您可以创建Prod / Dev环境,并将其中的变量映射到“项目级别”参数,这些参数将映射到“项目级别连接管理器”。 。

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

答案 1 :(得分:0)

除了讨论安全性是多少(实际上是SQL Server表中的密码?)的讨论之外,我还使用PowerShell的特殊组合提出了这种请求,在某些情况下还从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实例,数据库名称和DataSource的信息。在内部,您可以有一个ForEach Loop对象,该对象可以与DatabaseList对象进行交互并对其进行处理。