我的服务器中有多个数据库。因此,服务器上的每个数据库都有多个连接管理器。 想在executesql任务中传递数据库名称作为参数,这样我就可以减少连接管理器的数量。 像下面这样的东西是最可取的,
use ?
select * from tablename
您应该能够使用多部分数据库命名约定。 “使用数据库”只是更改连接的上下文。选择您最常使用的数据库作为默认值,然后使用以下内容:
从databasename.schema.tablename中选择column1、column2
如果您设置了链接服务器,您甚至可以跨服务器使用它。 (4部分命名)
从linkedserver.databasename.schema.tablename中选择column1、column2
这样我就可以减少连接管理器的数量。
我强烈建议使用 SSIS Catalog 来实现更集中的管理方法,并考虑利用 SSIS 环境变量来减少对多个连接管理器的需求。
use ? select * from tablename
对于任何试图实现与问题中提供的示例类似的目标的人:
这里有另一种方法:
创建项目参数:在 Project.params 中设置要从不同 SSIS 目录动态传递的变量(示例名称:DynamicDBName)。您可以使用其他方法来设置 DynamicDBName 变量,具体取决于您的用途。
创建包参数:在您的包下,创建一个数据类型设置为 String 的变量(示例名称:DynamicDBSelectStatement)。请参考下图。
修改变量表达式:将sql语句写入DynamicDBSelectStatement变量下的表达式以利用项目变量。例如:
"use " + @[Project::DynamicDBName] + " select * from tablename"
执行SQL任务配置:最后,确保执行SQL任务设置为
SQLSourceType = Variable
和包含动态SQL语句的SourceVariable = DynamicDBSelectStatement
变量。