T-SQL을 사용하여 시드 단계 중 또는 데이터 동기화가 시작된 후 링크의 상태를 확인합니다.
다음 T-SQL 쿼리를 사용하여 링크를 통해 시드된 데이터베이스를 호스트하는 SQL Server 또는 SQL Managed Instance의 시드 단계 중에 링크의 상태를 확인합니다.
SELECT
ag.local_database_name AS 'Local database name',
ar.current_state AS 'Current state',
ar.is_source AS 'Is source',
ag.internal_state_desc AS 'Internal state desc',
ag.database_size_bytes / 1024 / 1024 AS 'Database size MB',
ag.transferred_size_bytes / 1024 / 1024 AS 'Transferred MB',
ag.transfer_rate_bytes_per_second / 1024 / 1024 AS 'Transfer rate MB/s',
ag.total_disk_io_wait_time_ms / 1000 AS 'Total Disk IO wait (sec)',
ag.total_network_wait_time_ms / 1000 AS 'Total Network wait (sec)',
ag.is_compression_enabled AS 'Compression',
ag.start_time_utc AS 'Start time UTC',
ag.estimate_time_complete_utc as 'Estimated time complete UTC',
ar.completion_time AS 'Completion time',
ar.number_of_attempts AS 'Attempt No'
FROM sys.dm_hadr_physical_seeding_stats AS ag
INNER JOIN sys.dm_hadr_automatic_seeding AS ar
ON local_physical_seeding_id = operation_id
-- Estimated seeding completion time
SELECT DISTINCT CONVERT(VARCHAR(8), DATEADD(SECOND, DATEDIFF(SECOND, start_time_utc, estimate_time_complete_utc) ,0), 108) as 'Estimated complete time'
FROM sys.dm_hadr_physical_seeding_stats
쿼리가 결과를 반환하지 않으면 시드 프로세스가 시작되지 않았거나 이미 완료된 것입니다.
기본 인스턴스에서 다음 T-SQL 쿼리를 사용하여 데이터 동기화가 시작되면 링크의 상태를 확인합니다.
DECLARE @link_name varchar(max) = '<DAGname>'
SELECT
rs.synchronization_health_desc [Link sync health]
FROM
sys.availability_groups ag
join sys.dm_hadr_availability_replica_states rs
on ag.group_id = rs.group_id
WHERE
rs.is_local = 0 AND rs.role = 2 AND ag.is_distributed = 1 AND ag.name = @link_name
GO
Azure Cloud Shell에서 다음 샘플 코드를 실행하거나 로컬로 Az.SQL 모듈을 설치합니다.
$ManagedInstanceName = "<ManagedInstanceName>" # The name of your linked SQL Managed Instance
$DAGName = "<DAGName>" # distributed availability group name
# Find out the resource group name
$ResourceGroupName = (Get-AzSqlInstance -InstanceName $ManagedInstanceName).ResourceGroupName
# Show link state details
(Get-AzSqlInstanceLink -ResourceGroupName $ResourceGroupName -InstanceName $ManagedInstanceName -Name $DAGName).Databases
# type "az" to use Azure CLI
managedInstanceName = "<ManagedInstanceName>" # The name of your linked SQL Managed Instance
dagName = "<DAGName>" # distributed availability group name
rgName = "<RGName>" # the resource group for the linked SQL Managed Instance
# Print link state details
az sql mi link show –-resource-group $rgName –-instance-name $managedInstanceName –-name $dagName
replicaState 값은 현재 링크를 설명합니다. 상태에 오류 포함된 경우 상태에 나열된 작업 중에 오류가 발생했습니다. 예를 들어, LinkCreationError은 링크를 생성하는 동안 오류가 발생했음을 나타냅니다.
링크를 사용할 때 발생할 수 있는 오류에는 링크를 초기화하려고 할 때 발생하는 오류와 링크를 만들려고 할 때 발생하는 오류의 두 가지 범주가 있습니다.
링크 초기화 오류
링크를 초기화할 때 다음 오류가 발생할 수 있습니다(링크 상태: LinkInitError).
오류 41962: 링크가 5분 이내에 시작되지 않아 작업이 중단되었습니다.
네트워크 연결 확인하고 다시 시도합니다.
오류 41973: SQL Server 엔드포인트 인증서를 Azure SQL Managed Instance로 올바르게 가져오지 않았기 때문에 링크를 설정할 수 없습니다.
오류 41974: SQL Managed Instance 엔드포인트 인증서를 SQL Server로 올바르게 가져오지 않았기 때문에 링크를 설정할 수 없습니다.
오류 41976: 가용성 그룹이 응답하지 않습니다. 이름 및 구성 매개 변수를 확인하고 다시 시도합니다.
오류 41986: 연결이 실패했거나 보조 복제본이 응답하지 않아 링크를 설정할 수 없습니다. 이름, 구성 매개 변수 및 네트워크 연결 확인한 다음 다시 시도합니다.
오류 47521: 보조 서버가 요청을 받지 못했기 때문에 링크를 설정할 수 없습니다. 주 서버에서 가용성 그룹 및 데이터베이스가 정상 상태인지 확인하고 다시 시도합니다.
링크 만들기 오류
링크를 만들 때 다음과 같은 오류가 발생할 수 있습니다(링크 상태: LinkCreationError).
오류 41977: 대상 데이터베이스가 응답하지 않습니다. 링크 매개 변수를 확인하고 다시 시도합니다.
강제 장애 조치 후 일관성이 없는 상태
강제 장애 조치(failover)후에 두 복제본이 모두 주 역할에 있게 될 수 있는 분할 브레인 시나리오가 발생하여 링크가 일관되지 않은 상태로 남아 있을 수 있습니다. 재해 발생 시 보조 복제본으로 장애 조치(failover)한 다음, 주 복제본이 온라인으로 복귀할 때 이러한 상황이 발생할 수 있습니다.
먼저 스플릿 브레인 시나리오에 있는지 확인합니다. SSMS(SQL Server Management Studio) 또는 Transact-SQL(T-SQL)를 사용하여 수행할 수 있습니다.
SSMS에서 SQL Server와 SQL 관리 인스턴스 모두에 연결한 다음, Object 탐색기에서 Always On 가용성 그룹의 가용성 그룹 노드 아래에 있는 가용성 복제본 을 확장합니다. 두 개의 서로 다른 복제본이 (기본)로 나열되는 경우, '스플릿 브레인' 시나리오에 해당합니다.
과 에서 SQL Server 및 SQL Managed Instance에 다음 T-SQL 스크립트를 실행하여 복제본의 역할을 확인할 수 있습니다.
-- Execute on SQL Server and SQL Managed Instance
USE master
DECLARE @link_name varchar(max) = '<DAGName>'
SELECT
ag.name [Link name],
rs.role_desc [Link role]
FROM
sys.availability_groups ag
JOIN sys.dm_hadr_availability_replica_states rs
ON ag.group_id = rs.group_id
WHERE
rs.is_local = 1 AND ag.is_distributed = 1 AND ag.name = @link_name
GO
두 인스턴스가 링크 역할 열에 기본 나열하는 경우 분할 브레인 시나리오에 있습니다.
분할 브레인 상태를 해결하려면 먼저 원래 주 복제본이었던 복제본에 대한 백업을 수행합니다. 원래 주 서버가 SQL Server인 경우 테일 로그 백업. 원래 주 복제본이 SQL Managed Instance인 경우 복사 전용의 전체 백업을 수행하십시오. 백업이 완료되면, 원래 주 복제본으로 사용되었지만 이제 새 보조 복제본이 될 해당 복제본을 보조 역할로 분산 가용성 그룹에 설정합니다.
예를 들어 실제 재해가 발생할 경우, SQL Server 워크로드를 Azure SQL Managed Instance로 강제 장애 조치하고 SQL Managed Instance에서 워크로드를 계속 실행하려는 경우, SQL Server에서 최신 로그 백업을 수행한 후, SQL Server에 대해 분산 가용성 그룹을 다음과 같이 보조 역할로 설정합니다.
--Execute on SQL Server
USE master
ALTER AVAILABILITY GROUP [<DAGName>]
SET (ROLE = SECONDARY)
GO
다음으로, 다음 예제와 같은 링크를 사용하여 SQL Managed Instance에서 SQL Server로 계획된 수동 장애 조치(failover)를 실행합니다.
--Execute on SQL Managed Instance
USE master
ALTER AVAILABILITY GROUP [<DAGName>] FAILOVER
GO
네트워크 연결 테스트
링크가 작동하려면 SQL Server와 SQL Managed Instance 간의 양방향 네트워크 연결이 필요합니다. SQL Server 쪽에서 포트를 열고 SQL Managed Instance 쪽에서 NSG 규칙을 구성한 후 SSMS(SQL Server Management Studio) 또는 Transact-SQL을 사용하여 연결을 테스트합니다.
SQL Server와 SQL Managed Instance 모두에서 임시 SQL 에이전트 작업을 만들어 네트워크를 테스트하여 두 인스턴스 간의 연결을 확인합니다. SSMS에서 네트워크 검사기 사용하면 작업이 자동으로 만들어지고 테스트가 완료된 후 삭제됩니다. T-SQL을 사용하여 네트워크를 테스트하는 경우 SQL 에이전트 작업을 수동으로 삭제해야 합니다.
메모
SQL Server on Linux의 SQL Server 에이전트에서 PowerShell 스크립트를 실행하는 것은 현재 지원되지 않으므로 현재는 SQL Server on Linux의 SQL Server 에이전트 작업에서 Test-NetConnection 실행할 수 없습니다.
SQL 에이전트를 사용하여 네트워크 연결을 테스트하려면 다음 요구 사항이 필요합니다.
테스트를 수행하는 사용자는 SQL Server 및 SQL Managed Instance 모두에 대해 작업을(를) 만들 수 있는 권한이 있어야 합니다. 이 권한은 sysadmin 자격이 있거나 SQLAgentOperator 역할에 속할 때 부여됩니다.
SQL Server 에이전트 서비스는 SQL Server에서 실행하는 있어야 합니다. 에이전트는 SQL Managed Instance에서 기본적으로 설정되므로 추가 작업이 필요하지 않습니다.
SSMS에서 SQL Server와 SQL Managed Instance 간의 네트워크 연결을 테스트하려면 다음 단계를 수행합니다.
SSMS의 주 복제본이 될 인스턴스에 연결합니다.
개체 탐색기데이터베이스를 확장하고 보조 데이터베이스와 연결하려는 데이터베이스를 마우스 오른쪽 단추로 클릭합니다.
작업>Azure SQL Managed Instance 링크>연결 테스트 선택하여 네트워크 검사기 마법사를 엽니다.
네트워크 검사기 마법사의 소개 페이지에서 다음을 선택합니다.
필수 구성 요소 페이지에서 모든 요구 사항이 충족되면 다음선택합니다. 미충족된 필수 조건을 해결한 후, 유효성 검사를 다시 실행할선택하세요.
로그인 페이지에서 로그인 선택하여 보조 복제본이 될 다른 인스턴스에 연결합니다.
다음선택합니다.
네트워크 옵션 지정 페이지에서 세부 정보를 확인하고 필요한 경우 IP 주소를 제공합니다.
다음선택합니다.
요약 페이지에서 마법사가 수행하는 작업을 검토한 다음 마침 선택하여 두 복제본 간의 연결을 테스트합니다.
결과 페이지를 검토하여 두 복제본 간에 연결이 존재하는지 확인하고 닫기를 선택하여 완료합니다.
T-SQL을 사용하여 연결을 테스트하려면 양방향으로 연결을 확인해야 합니다. 먼저 SQL Server에서 SQL Managed Instance로의 연결을 테스트한 다음 SQL Managed Instance에서 SQL Server로의 연결을 테스트합니다.
SQL Server에서 SQL Managed Instance로의 연결 테스트
SQL Server의 SQL Server 에이전트를 사용하여 SQL Server에서 SQL Managed Instance로 연결 테스트를 실행합니다.
SQL Managed Instance에 연결하고 다음 스크립트를 실행하여 나중에 필요한 매개 변수를 생성합니다.
SELECT 'DECLARE @serverName NVARCHAR(512) = N''' + value + ''''
FROM sys.dm_hadr_fabric_config_parameters
WHERE parameter_name = 'DnsRecordName'
UNION
SELECT 'DECLARE @node NVARCHAR(512) = N''' + NodeName + '.' + Cluster + ''''
FROM (
SELECT SUBSTRING(replica_address, 0, CHARINDEX('\', replica_address)) AS NodeName,
RIGHT(service_name, CHARINDEX('/', REVERSE(service_name)) - 1) AppName,
JoinCol = 1
FROM sys.dm_hadr_fabric_partitions fp
INNER JOIN sys.dm_hadr_fabric_replicas fr
ON fp.partition_id = fr.partition_id
INNER JOIN sys.dm_hadr_fabric_nodes fn
ON fr.node_name = fn.node_name
WHERE service_name LIKE '%ManagedServer%'
AND replica_role = 2
) t1
LEFT JOIN (
SELECT value AS Cluster,
JoinCol = 1
FROM sys.dm_hadr_fabric_config_parameters
WHERE parameter_name = 'ClusterName'
) t2
ON (t1.JoinCol = t2.JoinCol)
INNER JOIN (
SELECT [value] AS AppName
FROM sys.dm_hadr_fabric_config_parameters
WHERE section_name = 'SQL'
AND parameter_name = 'InstanceName'
) t3
ON (t1.AppName = t3.AppName)
UNION
SELECT 'DECLARE @port NVARCHAR(512) = N''' + value + ''''
FROM sys.dm_hadr_fabric_config_parameters
WHERE parameter_name = 'HadrPort';
결과를 저장하여 다음 단계를 사용합니다. 이러한 매개 변수는 장애 조치(failover) 후에 변경될 수 있으므로 필요한 경우 다시 생성해야 합니다.
SQL Server 인스턴스에 연결합니다.
새 쿼리 창을 열고 다음 스크립트를 붙여넣습니다.
--START
-- Parameters section
DECLARE @node NVARCHAR(512) = N''
DECLARE @port NVARCHAR(512) = N''
DECLARE @serverName NVARCHAR(512) = N''
--Script section
IF EXISTS (
SELECT job_id
FROM msdb.dbo.sysjobs_view
WHERE name = N'TestMILinkConnection'
)
EXEC msdb.dbo.sp_delete_job @job_name = N'TestMILinkConnection',
@delete_unused_schedule = 1
DECLARE @jobId BINARY (16),
@cmd NVARCHAR(MAX)
EXEC msdb.dbo.sp_add_job @job_name = N'TestMILinkConnection',
@enabled = 1,
@job_id = @jobId OUTPUT
SET @cmd = (N'tnc ' + @serverName + N' -port 5022 | select ComputerName, RemoteAddress, TcpTestSucceeded | Format-List')
EXEC msdb.dbo.sp_add_jobstep @job_id = @jobId,
@step_name = N'Test Port 5022',
@step_id = 1,
@cmdexec_success_code = 0,
@on_success_action = 3,
@on_fail_action = 3,
@subsystem = N'PowerShell',
@command = @cmd,
@database_name = N'master'
SET @cmd = (N'tnc ' + @node + N' -port ' + @port + ' | select ComputerName, RemoteAddress, TcpTestSucceeded | Format-List')
EXEC msdb.dbo.sp_add_jobstep @job_id = @jobId,
@step_name = N'Test HADR Port',
@step_id = 2,
@cmdexec_success_code = 0,
@subsystem = N'PowerShell',
@command = @cmd,
@database_name = N'master'
EXEC msdb.dbo.sp_add_jobserver @job_id = @jobId,
@server_name = N'(local)'
GO
EXEC msdb.dbo.sp_start_job @job_name = N'TestMILinkConnection'
GO
--Check status every 5 seconds
DECLARE @RunStatus INT
SET @RunStatus = 10
WHILE (@RunStatus >= 4)
BEGIN
SELECT DISTINCT @RunStatus = run_status
FROM [msdb].[dbo].[sysjobhistory] JH
INNER JOIN [msdb].[dbo].[sysjobs] J
ON JH.job_id = J.job_id
WHERE J.name = N'TestMILinkConnection'
AND step_id = 0
WAITFOR DELAY '00:00:05';
END
--Get logs once job completes
SELECT [step_name],
SUBSTRING([message], CHARINDEX('TcpTestSucceeded', [message]), CHARINDEX('Process Exit', [message]) - CHARINDEX('TcpTestSucceeded', [message])) AS TcpTestResult,
SUBSTRING([message], CHARINDEX('RemoteAddress', [message]), CHARINDEX('TcpTestSucceeded', [message]) - CHARINDEX('RemoteAddress', [message])) AS RemoteAddressResult,
[run_status],
[run_duration],
[message]
FROM [msdb].[dbo].[sysjobhistory] JH
INNER JOIN [msdb].[dbo].[sysjobs] J
ON JH.job_id = J.job_id
WHERE J.name = N'TestMILinkConnection'
AND step_id <> 0
--END
@node, @port및 @serverName 매개 변수를 첫 번째 단계에서 얻은 값으로 바꿉니다.
스크립트를 실행하고 결과를 확인합니다. 다음 예제와 같은 결과가 표시됩니다.
결과를 확인합니다.
TcpTestSucceeded에서 각 테스트의 결과는 TcpTestSucceeded : True이어야 합니다.
RemoteAddresses는 SQL Managed Instance 서브넷의 IP 범위에 속해야 합니다.
응답이 실패하면 다음 네트워크 설정을 확인합니다.
네트워크 방화벽 및 SQL Server 호스트 OS(Windows/Linux) 방화벽에 SQL Managed Instance의 전체 서브넷 IP 범위에 대한 트래픽을 허용하는 규칙이 있습니다.
SQL Managed Instance를 호스트하는 가상 네트워크에 대해 포트 5022에서 통신을 허용하는 NSG 규칙이 있습니다.
SQL Managed Instance에서 SQL Server로의 연결 테스트
SQL Managed Instance가 SQL Server에 연결할 수 있는지 확인하려면 먼저 테스트 엔드포인트를 만듭니다. 그런 다음 SQL Server 에이전트를 사용하여 SQL 관리되는 인스턴스의 포트 5022에서 SQL Server를 ping하는 tnc 명령으로 PowerShell 스크립트를 실행합니다.
테스트 엔드포인트를 만들려면 SQL Server에 연결하고 다음 T-SQL 스크립트를 실행합니다.
-- Run on SQL Server
-- Create the certificate needed for the test endpoint
USE MASTER
CREATE CERTIFICATE TEST_CERT
WITH SUBJECT = N'Certificate for SQL Server',
EXPIRY_DATE = N'3/30/2051'
GO
-- Create the test endpoint on SQL Server
USE MASTER
CREATE ENDPOINT TEST_ENDPOINT
STATE=STARTED
AS TCP (LISTENER_PORT=5022, LISTENER_IP = ALL)
FOR DATABASE_MIRRORING (
ROLE=ALL,
AUTHENTICATION = CERTIFICATE TEST_CERT,
ENCRYPTION = REQUIRED ALGORITHM AES
)
SQL Server 엔드포인트가 포트 5022에서 연결을 수신하고 있는지 확인하려면 SQL Server 인스턴스의 호스트 운영 체제에서 다음 PowerShell 명령을 실행합니다.
tnc localhost -port 5022
테스트에 성공하면 TcpTestSucceeded : True표시됩니다. 그런 다음 SQL 관리되는 인스턴스에서 SQL Server 에이전트 작업을 만들어 SQL 관리형 인스턴스에서 포트 5022에서 SQL Server 테스트 엔드포인트를 테스트해 볼 수 있습니다.
다음으로, SQL 관리되는 인스턴스에서 다음 T-SQL 스크립트를 실행하여 NetHelper이라는 SQL 관리형 인스턴스에서 SQL Server 에이전트 작업을 만듭니다. 교체하다
<SQL_SERVER_IP_ADDRESS> SQL 관리형 인스턴스에서 액세스할 수 있는 SQL Server의 IP 주소를 사용합니다.
-- Run on SQL managed instance
-- SQL_SERVER_IP_ADDRESS should be an IP address that could be accessed from the SQL Managed Instance host machine.
DECLARE @SQLServerIpAddress NVARCHAR(MAX) = '<SQL_SERVER_IP_ADDRESS>'; -- insert your SQL Server IP address in here
DECLARE @tncCommand NVARCHAR(MAX) = 'tnc ' + @SQLServerIpAddress + ' -port 5022 -InformationLevel Quiet';
DECLARE @jobId BINARY(16);
IF EXISTS (
SELECT *
FROM msdb.dbo.sysjobs
WHERE name = 'NetHelper'
) THROW 70000,
'Agent job NetHelper already exists. Please rename the job, or drop the existing job before creating it again.',
1
-- To delete NetHelper job run: EXEC msdb.dbo.sp_delete_job @job_name=N'NetHelper'
EXEC msdb.dbo.sp_add_job @job_name = N'NetHelper',
@enabled = 1,
@description = N'Test SQL Managed Instance to SQL Server network connectivity on port 5022.',
@category_name = N'[Uncategorized (Local)]',
@owner_login_name = N'sa',
@job_id = @jobId OUTPUT;
EXEC msdb.dbo.sp_add_jobstep @job_id = @jobId,
@step_name = N'TNC network probe from SQL MI to SQL Server',
@step_id = 1,
@os_run_priority = 0,
@subsystem = N'PowerShell',
@command = @tncCommand,
@database_name = N'master',
@flags = 40;
EXEC msdb.dbo.sp_update_job @job_id = @jobId,
@start_step_id = 1;
EXEC msdb.dbo.sp_add_jobserver @job_id = @jobId,
@server_name = N'(local)';
팁
SQL 관리형 인스턴스에서 연결 프로브에 대한 SQL Server의 IP 주소를 수정해야 하는 경우 EXEC msdb.dbo.sp_delete_job @job_name=N'NetHelper'실행하여 NetHelper 작업을 삭제하고 이전 스크립트를 사용하여 NetHelper 작업을 다시 만듭니다.
그런 다음, 작업을 실행하는 데 도움이 되는 저장 프로시저 ExecuteNetHelper 만들고 네트워크 프로브에서 결과를 가져옵니다. SQL 관리형 인스턴스에서 다음 T-SQL 스크립트를 실행합니다.
-- Run on managed instance
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'ExecuteNetHelper')
THROW 70001, 'Stored procedure ExecuteNetHelper already exists. Rename or drop the existing procedure before creating it again.', 1
GO
CREATE PROCEDURE ExecuteNetHelper AS
-- To delete the procedure run: DROP PROCEDURE ExecuteNetHelper
BEGIN
-- Start the job.
DECLARE @NetHelperstartTimeUtc DATETIME = GETUTCDATE();
DECLARE @stop_exec_date DATETIME = NULL;
EXEC msdb.dbo.sp_start_job @job_name = N'NetHelper';
-- Wait for job to complete and then see the outcome.
WHILE (@stop_exec_date IS NULL)
BEGIN
-- Wait and see if the job has completed.
WAITFOR DELAY '00:00:01'
SELECT @stop_exec_date = sja.stop_execution_date
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobactivity sja
ON sj.job_id = sja.job_id
WHERE sj.name = 'NetHelper'
-- If job has completed, get the outcome of the network test.
IF (@stop_exec_date IS NOT NULL)
BEGIN
SELECT sj.name JobName,
sjsl.date_modified AS 'Date executed',
sjs.step_name AS 'Step executed',
sjsl.log AS 'Connectivity status'
FROM msdb.dbo.sysjobs sj
LEFT JOIN msdb.dbo.sysjobsteps sjs
ON sj.job_id = sjs.job_id
LEFT JOIN msdb.dbo.sysjobstepslogs sjsl
ON sjs.step_uid = sjsl.step_uid
WHERE sj.name = 'NetHelper'
END
-- In case of operation timeout (90 seconds), print timeout message.
IF (datediff(second, @NetHelperstartTimeUtc, getutcdate()) > 90)
BEGIN
SELECT 'NetHelper timed out during the network check. Please investigate SQL Agent logs for more information.'
BREAK;
END
END
END;
SQL 관리형 인스턴스에서 다음 쿼리를 실행하여 NetHelper 에이전트 작업을 실행하고 결과 로그를 표시하는 저장 프로시저를 실행합니다.
-- Run on managed instance
EXEC ExecuteNetHelper;
연결에 성공하면 로그에 True표시됩니다. 연결에 실패하면 로그에 False표시됩니다.
연결에 실패한 경우 다음 항목을 확인합니다.
호스트 SQL Server 인스턴스의 방화벽은 포트 5022에서 인바운드 및 아웃바운드 통신을 허용합니다.
SQL Managed Instance를 호스트하는 가상 네트워크에 대한 NSG 규칙은 포트 5022에서 통신을 허용합니다.
SQL Server 인스턴스가 Azure VM에 있는 경우 NSG 규칙은 VM을 호스트하는 가상 네트워크의 포트 5022에 대한 통신을 허용합니다.
SQL Server가 실행 중입니다.
SQL Server에 테스트 엔드포인트가 있습니다.
문제를 해결한 후 관리되는 인스턴스에서 EXEC ExecuteNetHelper 실행하여 NetHelper 네트워크 프로브를 다시 실행합니다.
마지막으로 네트워크 테스트가 성공하면 다음 T-SQL 명령을 사용하여 SQL Server에서 테스트 엔드포인트 및 인증서를 삭제합니다.
-- Run on SQL Server
DROP ENDPOINT TEST_ENDPOINT;
GO
DROP CERTIFICATE TEST_CERT;
GO
주의
원본 환경과 대상 환경 간의 네트워크 연결의 유효성을 검사한 경우에만 다음 단계를 진행합니다. 그렇지 않으면 계속하기 전에 네트워크 연결 문제를 해결합니다.