在 SQL 查询中检索当前 SQL Server 连接字符串

Posted

技术标签:

【中文标题】在 SQL 查询中检索当前 SQL Server 连接字符串【英文标题】:Retrieve current SQL Server connection string within SQL query 【发布时间】:2014-11-29 05:31:14 【问题描述】:

(这是一个抽象的问题)

如何从 T-SQL 查询中获取当前连接字符串?

我的意思是需要这样的东西:

Select ConnectionString From Something

我得到这样的结果:

data source=HAMCKER-PC;initial catalog=CMMS;trusted_connection=true

我为什么需要这个

其实我想通过我的连接字符串传递一些额外的参数,假设上面的连接是这样的:

data source=HAMCKER-PC;initial catalog=CMMS;trusted_connection=true;Area=W9

我的查询中需要W9

【问题讨论】:

***.com/questions/25581002/…的可能重复 感谢指导,实际上是 dup 【参考方案1】:

获取数据源使用

SELECT @@SERVERNAME

初始目录:

SELECT DB_NAME()

我也可以查找trusted_connection,但我不明白这一点,因为你已经连接了所以你已经知道了。

如果您想使用连接字符串传递附加信息,您的选择是有限的。您可能应该使用application name,它可以通过SELECT APP_NAME()Workstation ID 访问。但这些都是有意义的,我不愿意“劫持”它们

您还可以使用 CONTEXT_INFO 传递信息 msdn.microsoft.com/en-us/library/ms187768.aspx、msdn.microsoft.com/en-us/library/ms180125.aspx

【讨论】:

感谢您的时间。我已经测试将自定义数据发送到 sql-server,它不会崩溃,但问题是要检索该数据! 客户端 API 不会将连接字符串发送到 SQL Server。对于一些连接字符串关键字,如应用程序名和主机名,它通过 TDS 协议消息将值传递给 SQL Server。服务器上没有其他值。 “问题是检索该数据”?你的意思是你的“区域”字符串?如果它不是连接字符串属性,则不会通过。如果您进一步解释,可能还有其他方法可以做您想做的事情。 您应该根据自己的需要查看 CONTEXT_INFO。 msdn.microsoft.com/en-us/library/ms187768.aspx, msdn.microsoft.com/en-us/library/ms180125.aspx

以上是关于在 SQL 查询中检索当前 SQL Server 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 中,如何从子查询中标识的表列名称中检索数据值?

数据查询 sql sever 2005

如何在单个查询(sql server)中插入1条记录后检索自动增量值

通过 JDBC 检索 SQL Server 查询统计信息

如何从 SQL Server 中检索数据?

SQL Server 日期查询,年月作为单独的列