我们想使用SQL Server表作为SSIS中所有连接管理器值的源。我们宁愿在项目级别执行此操作,因为我们的许多连接已经在项目级别进行。当项目打开时,我们希望能够根据输入值轻松切换正在查看的环境。我们之所以需要这样做,是因为在开发人员中创建项目时,我们使用的连接与将它们部署到产品中时使用的连接不同,并且我们使用了数百种不同的连接。我们不需要在SSIS或SQL Server代理或SSIS目录中进行任何切换。我们希望将它们严格保留在SQL Server表中。
如何将这些值从SQL Server表中馈送到变量中以提供值或参数?重申一下,最终产品在SQL Server中将有1个单个表,其中包含[ConnectionString]
,[InitialCatalog]
,[UserName]
,[UserName]
,[Password]
,{ {1}}等。我们将参数化所有连接管理器,这些连接管理器的值将从该表中获取。我们需要有关如何实现此目标的指导。
我希望能够在一个具有[HeaderRowsToSkip]
列的表中包含PROD和DEV,该列的值为'Dev'或'Prod',如果可能的话,我们希望在SSIS中打开项目时,系统会打开一个提示,询问我们想要哪个[Environment]
(可填充的提示),该提示会依次过滤SQL表的结果以根据输入的内容使用Dev或Prod。 / p>
如果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对象进行交互并对其进行处理。