MS SQL Server - 列出所有会话上下文值

Posted

技术标签:

【中文标题】MS SQL Server - 列出所有会话上下文值【英文标题】:MS SQL Server - List All Session Context Values 【发布时间】:2018-04-23 13:37:00 【问题描述】:

我最近开始使用 SQL Server 2016,并且正在使用 SESSION_CONTEXT 值来传递一些数据。

我正在尝试找出是否有任何方法可以同时读取所有会话上下文设置。为了澄清这仅用于调试目的 - 我已经可以访问各个设置(请参见下面的代码)。如果可能的话,我希望能够一口气读取所有这些设置。

-- What I Have
EXEC sp_set_session_context 'SortOrder','Price ASC'
EXEC sp_set_session_context 'ItemsPerPage',20

SELECT SESSION_CONTEXT(N'SortOrder') [SortOrder]
SELECT SESSION_CONTEXT(N'ItemsPerPage') [ItemsPerPage]
SELECT SESSION_CONTEXT(N'NotSetYet') [NotSetYet]

-- What I'd like
SELECT * FROM SESSION_CONTEXT_TABLE

感谢您的帮助。

非常感谢。

【问题讨论】:

如果Aaron Bertrand doesn't mention a way in his dig into this feature,我强烈怀疑没有办法。技巧:存储一个名为index 的值,其中包含一个以逗号分隔的真实 设置名称列表...呃... Database Administrators 上的跨站点欺骗:dba.stackexchange.com/questions/188868/… - 那里也没有答案 【参考方案1】:

会话上下文存储在系统页面中,因此您无法在没有密钥的情况下检索所有上下文的列表。

如果您正在寻找全局参数,请尝试保存为 JSON、XML 或 CSV 字符串并使用密钥检索。

【讨论】:

fwiw 你不能(可靠地)这样做,因为该值是一个不适应 blob 类型的 sql_variant。 @Math;如果有帮助,请标记答案,如果有帮助,请发表评论。

以上是关于MS SQL Server - 列出所有会话上下文值的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server里那些我们应该知道的系统存储过程

MS SQL Server 2008 R2 常规操作

服务器主体无法访问 SQL Server MS 2012 中当前安全上下文下的数据库

如何列出 SQL Server 中的所有连接?

列出 SQL Server 中所有删除的数据库

Flyway 迁移在 MS SQL Server 中成功,但在 H2 数据库中失败