如何从 SSIS 包中检索 SQL Server 实例名称

Posted

技术标签:

【中文标题】如何从 SSIS 包中检索 SQL Server 实例名称【英文标题】:How to retrieve the SQL Server instance name from within a SSIS package 【发布时间】:2014-01-22 07:16:56 【问题描述】:

从 SQL Server 2012 开始,可以将 SSIS 部署到 SSIS 目录。在幕后,这个目录只是一个 SQL Server 数据库。

在我的一个包中,我目前有一个构成连接字符串的表达式。要设置与正确服务器实例的连接,连接管理器的连接字符串当前由以下表达式定义:

"Data Source=" + @[$Project::ServerInstance] + ";Initial Catalog=InitialCatalog;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;"

所以 SQL Server 实例由项目参数提供,而项目参数又由环境变量填充。

这对我来说似乎没有必要:包存储在数据库中,该数据库已经在 SQL Server 实例中运行。我只需要那个特定实例的名称。是否可以在项目部署模式下从 SSIS 中访问该名称?

【问题讨论】:

使用serverproperty 'servername'@@servername 获取服务器名称的小脚本怎么样 @Sourav_Agasti 欢迎您提出脚本:)。 【参考方案1】:

我遇到了同样的问题,但我没有找到通过本机 SSIS 方式获得该值的方法。

我的解决方案:我刚刚写了

Data Source=(local); 

此解决方案的缺点是您的开发计算机还必须有一个包含所有表的本地 SQL Server 数据库。

可能的替代解决方案:您可以使用 Scrip Task 和 C# 库获得一些东西。我从未涉足此领域,但我确信它的巨大潜力。

【讨论】:

以上是关于如何从 SSIS 包中检索 SQL Server 实例名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SSIS 包中使用变量和 SQL 代码?

如何在SQL Server 2008作业或包中增加MaximumErrorCount?

SQL Server 2005 SSIS - 如何从文件的第一行获取特殊信息

SSIS 错误:无法从 SQL 命令的参数中检索目标列描述

将超过 255 个字符从 excel 导入到 sql server(上一个问题 - 如何使用 ssis 将文本限定 CSV 动态加载到 sql server)

如何从数据库中检索 bigint 并将其放入 SSIS 中的 Int64