sys.sp_rda_set_query_mode (Transact-SQL)

适用于: SQL Server 2016 (13.x) 及更高版本

指定针对当前已启用 Stretch 的数据库及其表的查询是否同时返回本地和远程数据(默认值),还是仅返回本地数据。

重要

SQL Server 2022 (16.x) 和 Azure SQL 数据库中已弃用 Stretch Database。 在数据库引擎的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

Transact-SQL 语法约定

语法

sp_rda_set_query_mode
    [ @mode = ] @mode
    [ , [ @force = ] @force ]
[ ; ]

参数

[ @mode = ] @mode

以下值之一:

  • DISABLED 针对已启用 Stretch 的表的所有查询都失败。

  • LOCAL_ONLY 针对已启用 Stretch 的表的查询仅返回本地数据。

  • LOCAL_AND_REMOTE 针对已启用 Stretch 的表的查询同时返回本地数据和远程数据。 这是默认行为。

[ @force = ] @force

如果要在不验证的情况下更改查询模式,则可以设置为 1 的可选 值。

返回代码值

0(成功)或 > 0(失败)。

权限

需要 db_owner 权限。

注解

以下扩展存储过程还为已启用 Stretch 的数据库设置查询模式。

  • sp_rda_deauthorize_db:

    运行 sp_rda_deauthorize_db 后,针对已启用 Stretch 的数据库和表的所有查询都会失败。 也就是说,查询模式设置为 DISABLED。 若要退出此模式,请执行以下操作之一。

    • 运行 sys.sp_rda_reauthorize_db (Transact-SQL) 以重新连接到远程 Azure 数据库。 此操作会自动将查询模式重置为 LOCAL_AND_REMOTE,这是 Stretch Database 的默认行为。 也就是说,查询返回本地和远程数据的结果。

    • 使用LOCAL_ONLY参数运行sys.sp_rda_set_query_mode,让查询仅针对本地数据继续运行。

  • sp_rda_reauthorize_db:

    运行 sys.sp_rda_reauthorize_db (Transact-SQL) 重新连接到远程 Azure 数据库时,此操作会自动将查询模式重置为 LOCAL_AND_REMOTE,这是 Stretch Database 的默认行为。 也就是说,查询返回本地和远程数据的结果。