sys.sp_rda_test_connection (Transact-SQL)

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

测试从 SQL Server 到远程 Azure 服务器的连接,并报告可能导致数据迁移的问题。

语法

EXECUTE sys.sp_rda_test_connection
    @database_name = N'db_name'
    , @server_address = N'azure_server_fully_qualified_address'
    , @azure_username = N'azure_username'
    , @azure_password = N'azure_password'
    , @credential_name = N'credential_name'
[ ; ]

参数

@database_name= N'db_name'

已启用 Stretch 的 SQL Server 数据库的名称。 此参数是可选的。

重要

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

@server_address= N'azure_server_fully_qualified_address'

Azure 服务器的完全限定地址。

  • 如果为@database_name提供值,但指定的数据库未启用 Stretch,则必须为@server_address提供值

  • 如果为@database_name提供值,并且指定的数据库已启用 Stretch,则无需为@server_address提供值。 如果为 @server_address 提供值,则存储过程将忽略它,并使用已与已启用 Stretch 的数据库关联的现有 Azure 服务器。

@azure_username= N'azure_username'

远程 Azure 服务器的用户名。

@azure_password= N'azure_password'

远程 Azure 服务器的密码。

@credential_name= N'credential_name'

你可以提供存储在已启用 Stretch 的数据库中的凭据的名称,而不是提供用户名和密码。

返回代码值

如果成功,sp_rda_test_connection则返回严重性和EX_INFO成功返回代码的错误 14855(STRETCH_MAJOR, STRETCH_CONNECTION_TEST_PROC_SUCCEEDED)。

如果失败,sp_rda_test_connection则返回严重性和EX_USER错误代码为 14856 (STRETCH_MAJOR, STRETCH_CONNECTION_TEST_PROC_FAILED) 的错误。

结果集

列名称 数据类型 说明
link_state int 以下值之一,对应于 < a0 link_state_desc/&a0> 的值。

- 0
- 1
2-
- 3
- 4
link_state_desc varchar(32) 以下值之一,对应于上述值。link_state

-健康
SQL Server 和远程 Azure 服务器之间的运行状况良好。
- ERROR_AZURE_FIREWALL
Azure 防火墙阻止 SQL Server 和远程 Azure 服务器之间的链接。
- ERROR_NO_CONNECTION
SQL Server 无法连接到远程 Azure 服务器。
- ERROR_AUTH_FAILURE
身份验证失败正在阻止 SQL Server 和远程 Azure 服务器之间的链接。
-错误
不是身份验证问题、连接问题或防火墙问题的错误是阻止 SQL Server 与远程 Azure 服务器之间的链接。
error_number int 错误的编号。 如果没有错误,则此字段为 NULL。
error_message nvarchar(1024) 错误消息。 如果没有错误,则此字段为 NULL。

权限

需要 db_owner 权限。

示例

检查从 SQL Server 到远程 Azure 服务器的连接

EXEC sys.sp_rda_test_connection @database_name = N'<Stretch-enabled database>';
GO

结果显示 SQL Server 无法连接到远程 Azure 服务器。

link_state link_state_desc error_number error_message
2 ERROR_NO_CONNECTION <与连接相关的错误号> <与连接相关的错误消息>

检查 Azure 防火墙

USE <Stretch-enabled database>
GO
EXECUTE sys.sp_rda_test_connection;
GO

结果显示,Azure 防火墙正在阻止 SQL Server 和远程 Azure 服务器之间的链接。

link_state link_state_desc error_number error_message
1 ERROR_AZURE_FIREWALL <与防火墙相关的错误号> <与防火墙相关的错误消息>

检查身份验证凭据

USE <Stretch-enabled database>
GO
EXECUTE sys.sp_rda_test_connection;
GO

结果显示身份验证失败正在阻止 SQL Server 和远程 Azure 服务器之间的链接。

link_state link_state_desc error_number error_message
3 ERROR_AUTH_FAILURE <身份验证相关的错误号> <身份验证相关的错误消息>

检查远程 Azure 服务器的状态

USE <SQL Server database>
GO
EXECUTE sys.sp_rda_test_connection
    @server_address = N'<server name>.database.windows.net',
    @azure_username = N'<user name>',
    @azure_password = N'<password>';
GO

结果显示连接正常,可以为指定的数据库启用 Stretch Database。

link_state link_state_desc error_number error_message
0 HEALTHY NULL NULL