2

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

  1. 我们如何将这些值从 SQL Server 表馈送到提供值或参数的变量中?重申一下,最终产品将在 SQL Server 中有 1 个包含所有列(如[ConnectionString][InitialCatalog][UserName][UserName][Password]等)的单个表[HeaderRowsToSkip]。我们将参数化所有连接管理器,这些连接管理器的值将从该表中提供。我们需要指导如何做到这一点。

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

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

4

2 回答 2

1

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

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

参考: 在 SQL Server Integration Services 中设置环境变量 使用 SSIS 目录创建强大的 SSIS 开发环境

于 2018-12-27T07:07:21.020 回答
0

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

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

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

于 2018-12-27T00:26:21.820 回答