Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使SSIS包动态选择所需的连接管理器?_Sql Server_Ssis_Visual Studio 2017_Oledb_Ssis 2017 - Fatal编程技术网

Sql server 如何使SSIS包动态选择所需的连接管理器?

Sql server 如何使SSIS包动态选择所需的连接管理器?,sql-server,ssis,visual-studio-2017,oledb,ssis-2017,Sql Server,Ssis,Visual Studio 2017,Oledb,Ssis 2017,我有一个SSIS包,其中包含到“SQL Server 1”的OLE DB连接管理器,以及来自本地计算机的D盘的平面文件管理器 该包基本上从我使用的机器的D盘检索数据,并通过一系列包含SQL任务的循环容器将其发送到“SQL Server 1”。这一切都很好 挑战在于我想将完全相同的包部署到“SQL Server 2”。“SQL Server 2”中的所有文件、表等与“SQL Server 2”所在的本地计算机的D磁盘中的文件完全相同。然而,我不知道该怎么做 如果我将OLEDB连接管理器更改为“SQ

我有一个SSIS包,其中包含到“SQL Server 1”的OLE DB连接管理器,以及来自本地计算机的D盘的平面文件管理器

该包基本上从我使用的机器的D盘检索数据,并通过一系列包含SQL任务的循环容器将其发送到“SQL Server 1”。这一切都很好

挑战在于我想将完全相同的包部署到“SQL Server 2”。“SQL Server 2”中的所有文件、表等与“SQL Server 2”所在的本地计算机的D磁盘中的文件完全相同。然而,我不知道该怎么做

如果我将OLEDB连接管理器更改为“SQLServer2”,则所有操作都会正常工作,因为SQL任务会自动选择唯一存在的连接。尽管如此,关键是要以某种方式动态地做到这一点

这意味着同时使用“SQL Server 1”和“SQL Server 2”作为OLEDB连接管理器,并将同一SSIS项目部署到两台服务器(目前仅部署到“SQL Server 1”)

我已经在Project-Properties下创建了一个新配置,其中选择了“SQLServer2”作为部署的服务器名称。最初,只有一个服务器存在,它当然有“SQL Server 1”作为部署服务器。我知道这还不够,但不知道还能做什么


我们的目标是将同一个包部署到Server1和Server2,如有任何帮助,我们将不胜感激。谢谢

您可以使用表达式动态更改OLEDB连接管理器connectionstring属性:

您可以添加变量或项目参数,并在包执行时传递连接字符串。有关更多详细信息,请参阅以下文章之一:


我找到的链接(贴在末尾)详细介绍了答案,并逐步说明了如何实现我的目的,即通过动态连接字符串将SSIS包部署到不同的服务器:

基本上要遵循5个步骤(同样,在链接中详细介绍):

  • 创建项目参数并使用项目参数配置项目的连接管理器
  • 将项目部署到SQL server中的SSIS目录
  • 在SSIS目录中创建环境以及变量
  • 将环境链接到项目和带有参数的变量
  • 使用环境执行包

  • 听起来您不应该有两个数据连接,而是环境和项目变量,它们根据您运行的环境而变化。然后,数据连接本身会根据您的环境指向不同的服务器。谢谢!虽然我不理解你的答案(我是SSIS新手),但我研究了环境和项目变量,并在这里找到了详细的解决方案:谢谢你为我指明了正确的方向:)@biu noob如果你解决了这个问题,请写下你自己的答案或感谢你的帮助!这个链接为我做到了这一点,因为它很容易理解,非常详细,并准确地解释了我在寻找什么: