在 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 中,如何从子查询中标识的表列名称中检索数据值?