【发布时间】:2017-07-21 16:29:46
【问题描述】:
我想知道是否可以使用Elastic Queries 在不同的 Azure Sql 数据库之间共享 SQL Server SESSION CONTEXT 变量。 我在官方文档中搜索过,但找不到有关此功能的任何信息。
【问题讨论】:
标签: sql-server azure azure-sql-database sql-server-2016 sql-session-state
我想知道是否可以使用Elastic Queries 在不同的 Azure Sql 数据库之间共享 SQL Server SESSION CONTEXT 变量。 我在官方文档中搜索过,但找不到有关此功能的任何信息。
【问题讨论】:
标签: sql-server azure azure-sql-database sql-server-2016 sql-session-state
SESSION CONTEXT 本地存在于 SQL Server 中的单个服务器实例中。 (它与会话相关联)。 SQL Azure 是使用 SQL Server 构建的,但映射的某些部分对客户是不透明的(它们可能会根据您使用的版本或我们用于交付服务的内部软件的版本等情况而改变)。
弹性查询是一项功能,可让您从一个数据库(源)查询一个或多个其他数据库(目标)。在这样的模型中,您有一个与源数据库的 SQL Server 会话,并且弹性查询与被触及的每个其他数据库有一个单独的连接/会话。
我认为您要问的问题是“我可以在源连接/会话上设置会话上下文,并在其中运行查询时让它流向所有目标连接吗?” (这是我最好的猜测——让我知道它是否不同)。今天的答案是“否”——会话变量不会作为弹性查询的一部分从源流向目标。此外,由于现在弹性查询是只读的,因此您不能使用弹性查询在每个目标数据库连接/会话上单独设置会话上下文作为操作的一部分。
未来,我们会考虑是否有这样的事情我们可以做,但目前我们没有这样的承诺时间表。
我希望这可以解释在对话下事情是如何运作的。 真挚地, 康纳坎宁安 架构师,SQL
【讨论】:
EXEC sp_execute_remote 传递会话变量,然后在其中调用sp_set_session_context 以使用我当前的会话值设置会话变量,然后再调用需要这些值的主函数。我知道这不是最好的解决方案,但它确实有效。