데이터베이스 미러링 오류 1418 해결: 서버 네트워크 주소에 연결할 수 없음

Temp mail SuperHeros
데이터베이스 미러링 오류 1418 해결: 서버 네트워크 주소에 연결할 수 없음
데이터베이스 미러링 오류 1418 해결: 서버 네트워크 주소에 연결할 수 없음

데이터베이스 미러링 연결 문제 이해

데이터베이스 미러링은 SQL Server 환경에서 고가용성과 중복성을 보장하기 위한 필수 전략입니다. 그러나 미러링을 구성하면 서버 네트워크 주소에 연결할 수 없거나 존재하지 않는다는 오류 1418과 같은 실망스러운 오류가 발생할 수 있습니다.

이 특정 오류는 두 데이터베이스에 개별적으로 액세스할 수 있는 경우에도 두 SQL Server 인스턴스 간에 미러링 세션을 설정하려고 할 때 자주 발생합니다. 미러링 엔드포인트가 서로 통신하지 못하는 경우 문제가 발생합니다.

현재의 경우 로컬 데스크톱(192.168.0.80)과 미니 PC(192.168.0.85)가 미러링 프로세스에 참여합니다. 미니 PC는 미러링의 "고성능" 모드를 사용하여 모바일 애플리케이션에 대한 읽기 전용 복제본 역할을 하도록 설계되었습니다.

올바른 포트 구성 및 방화벽 조정에도 불구하고 미러링 세션을 시작하려고 하면 사용자에게 오류 1418이 발생합니다. 이 문서에서는 이 문제를 해결하기 위한 잠재적인 원인과 해결 방법을 살펴보겠습니다.

명령 사용예
ALTER ENDPOINT 이 명령은 SQL Server에서 데이터베이스 미러링 끝점의 상태를 수정하는 데 사용됩니다. 오류 1418을 해결하는 과정에서 엔드포인트가 올바르게 시작되고 지정된 포트에서 수신 대기하는지 확인합니다. 예: ALTER ENDPOINT [미러링] STATE = 시작됨;
GRANT CONNECT ON ENDPOINT 특정 로그인을 통해 미러링 엔드포인트에 연결할 수 있습니다. 이는 데이터베이스 미러링 중에 SQL Server 인스턴스가 안전하게 통신할 수 있도록 하는 데 중요합니다. 예: GRANT CONNECT ON ENDPOINT::[Mirroring_Endpoint] TO [DOMAINUserAccount];
SET PARTNER 데이터베이스 미러링 세션에서 하나의 SQL Server 인스턴스를 파트너로 구성합니다. 이 명령은 파트너 서버의 네트워크 주소를 설정합니다. 예: ALTER DATABASE YourDatabaseName SET PARTNER = 'TCP://192.168.0.85:5022';
CREATE ENDPOINT 특정 포트에서 수신 대기하고 데이터베이스 미러링 세션을 관리하는 미러링 엔드포인트를 만듭니다. 통신 역할(예: PARTNER)을 지정합니다. 예: CREATE ENDPOINT [Mirroring_Endpoint] AS TCP(LISTENER_PORT = 5022) FOR DATABASE_MIRRORING(ROLE = PARTNER);
netsh advfirewall firewall add rule SQL Server 및 미러링에 필요한 특정 포트(예: 1433 및 5022)를 통한 트래픽을 허용하도록 방화벽 규칙을 구성하는 데 사용됩니다. 이는 미러링 파트너 간의 통신을 활성화하는 데 필수적입니다. 예: netsh advfirewall 방화벽 추가 규칙 이름="SQLPort" dir=in 작업=허용 프로토콜=TCP localport=1433
socket.create_connection 지정된 서버 및 포트에 대한 TCP 연결을 설정하는 데 사용되는 Python 명령입니다. 이 컨텍스트에서는 네트워크를 통해 SQL Server 인스턴스에 연결할 수 있는지 확인하는 데 사용됩니다. 예: 소켓.create_connection((서버, 포트), timeout=5);
New-Object System.Net.Sockets.TcpClient 포트 연결을 테스트하기 위해 TCP 클라이언트를 만드는 데 사용되는 PowerShell 명령입니다. 필요한 미러링 포트가 열려 있고 서버 간에 액세스할 수 있는지 확인하는 데 도움이 됩니다. 예: $tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port)
SELECT * FROM sys.database_mirroring 이 SQL 명령은 데이터베이스 미러링 세션의 상태를 검색하여 미러링 설정이 올바르게 설정되었는지 또는 문제가 있는지 진단하는 데 도움을 줍니다. 예: SELECT * FROM sys.database_mirroring;

미러링 오류 해결 스크립트의 세부 분석

이전 예제에서 제공된 첫 번째 스크립트는 다음을 사용합니다. Transact-SQL(T-SQL) SQL Server의 미러링 오류를 구성하고 해결하는 명령입니다. 스크립트의 가장 중요한 부분은 미러링 엔드포인트. 이러한 끝점은 미러링 중에 SQL Server 인스턴스가 통신하는 데 사용하는 네트워크 인터페이스입니다. 명령 엔드포인트 변경 두 서버의 엔드포인트가 "STARTED" 상태인지 확인하여 통신이 가능하도록 합니다. 그만큼 파트너 설정 그런 다음 명령을 사용하여 데이터베이스를 연결하고 파트너 서버의 네트워크 주소를 지정합니다. 이를 통해 두 SQL 인스턴스가 네트워크를 통해 데이터를 미러링할 수 있습니다.

두 번째 스크립트는 두 서버 간의 네트워크 연결을 테스트하도록 설계된 PowerShell 솔루션입니다. PowerShell은 새 개체 System.Net.Sockets.TcpClient 지정된 IP 주소와 포트에 연결을 시도하는 TCP 클라이언트를 생성하는 명령입니다. 이는 필수 포트(SQL Server의 경우 1433, 미러링의 경우 5022)가 열려 있고 액세스할 수 있는지 확인하는 효율적인 방법입니다. 이 스크립트는 두 SQL 인스턴스의 통신을 방해하여 오류를 일으킬 수 있는 방화벽 또는 네트워킹 문제를 진단하는 데 특히 유용합니다. 오류 1418.

세 번째 스크립트는 Windows 명령 프롬프트 명령을 활용하여 방화벽 설정을 관리합니다. 구체적으로, netsh advfirewall 방화벽 추가 규칙 명령은 SQL Server 및 미러링에 필요한 포트를 여는 데 사용됩니다. 이렇게 하면 데이터베이스 트래픽(포트 1433)과 미러링 트래픽(포트 5022)이 두 서버 간에 자유롭게 흐를 수 있습니다. 방화벽을 일시적으로 비활성화하여 netsh advfirewall은 allprofiles 상태를 꺼짐으로 설정합니다. 명령을 실행하면 스크립트는 방화벽이 네트워크 액세스 문제의 근본 원인인지 확인할 수 있습니다. 이 솔루션은 보안 환경에서 서버 통신 문제를 해결할 때 특히 중요합니다.

마지막으로 Python 스크립트는 다음을 사용합니다. 소켓.create_connection 두 서버 간의 네트워크 검사를 수행하는 기능입니다. 이 스크립트는 서버가 필수 TCP 포트를 통해 서로 연결할 수 있는지 확인하는 빠르고 효과적인 방법을 제공합니다. 연결 설정을 시도하고 성공하면 네트워크 설정이 올바른지 확인합니다. 네트워크 관련 문제를 처리하는 Python의 단순성은 특히 다른 도구를 사용할 수 없거나 사용하기 어려운 환경에서 연결을 테스트하는 데 좋은 선택입니다. 이러한 스크립트는 함께 문제를 해결하기 위한 포괄적인 접근 방식을 제공합니다. 데이터베이스 미러링 오류가 발생하고 SQL Server 인스턴스 간의 원활한 통신이 보장됩니다.

해결 방법 1: SQL Server 데이터베이스 미러링의 오류 1418 수정(T-SQL 접근 방식)

이 솔루션은 T-SQL(Transact-SQL)을 사용하여 끝점 구성, 연결 인증, 서버 주소 유효성 검사를 통해 데이터베이스 미러링 문제를 해결합니다.

-- Enable server to listen on the specified ports
ALTER ENDPOINT [Mirroring] 
STATE = STARTED;
GO

-- Ensure both databases are in FULL recovery mode
ALTER DATABASE YourDatabaseName 
SET RECOVERY FULL;
GO

-- Create mirroring endpoints on both servers
CREATE ENDPOINT [Mirroring_Endpoint]
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (ROLE = PARTNER);
GO

-- Grant CONNECT permissions to the login account
GRANT CONNECT ON ENDPOINT::[Mirroring_Endpoint] 
TO [DOMAIN\UserAccount];
GO

-- Set up mirroring using T-SQL command
ALTER DATABASE YourDatabaseName 
SET PARTNER = 'TCP://192.168.0.85:5022';
GO

-- Verify the status of the mirroring configuration
SELECT * FROM sys.database_mirroring;
GO

솔루션 2: SQL Server 포트 접근성을 테스트하는 PowerShell 스크립트

이 솔루션은 PowerShell을 사용하여 서버 간의 포트 연결을 테스트하여 필요한 포트가 열려 있고 수신 대기 중인지 확인합니다.

# Define server IPs and ports
$server1 = "192.168.0.80"
$server2 = "192.168.0.85"
$port = 5022

# Function to test port connectivity
function Test-Port {
   param([string]$server, [int]$port)
   try {
       $tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port)
        Write-Host "$server on port $port is reachable."
       $tcpClient.Close()
   } catch {
        Write-Host "$server on port $port is not reachable."
    }
}

# Test both servers
Test-Port -server $server1 -port $port
Test-Port -server $server2 -port $port

해결 방법 3: SQL Server 오류 1418 수정(방화벽 구성)

이 접근 방식에서는 Windows 명령 프롬프트를 사용하여 방화벽 구성을 확인하고 필요한 포트(1433, 5022)가 두 서버 모두에 열려 있는지 확인합니다.

-- Check if SQL Server and mirroring ports are open
netsh advfirewall firewall add rule name="SQLPort" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name="MirrorPort" dir=in action=allow protocol=TCP localport=5022

-- Disable firewall temporarily for testing purposes
netsh advfirewall set allprofiles state off

-- Enable firewall again after testing
netsh advfirewall set allprofiles state on

솔루션 4: 서버 간 TCP 연결을 검증하는 Python 스크립트

이 솔루션은 Python을 사용하여 SQL Server 인스턴스가 TCP 연결을 확인하여 네트워크를 통해 통신할 수 있는지 확인합니다.

import socket

# Define server IPs and port
server1 = '192.168.0.80'
server2 = '192.168.0.85'
port = 5022

# Function to check connectivity
def check_connection(server, port):
    try:
        sock = socket.create_connection((server, port), timeout=5)
       print(f'Connection successful to {server}:{port}')
        sock.close()
   except socket.error:
       print(f'Cannot connect to {server}:{port}')

# Check both servers
check_connection(server1, port)
check_connection(server2, port)

해결 방법 5: SSMS(SQL Server Management Studio) GUI 구성

이 솔루션은 명령줄 인터페이스 사용을 선호하지 않는 사용자를 위해 SSMS GUI를 사용하여 미러링을 설정하는 과정을 안내합니다.

1. Open SQL Server Management Studio (SSMS).
2. Right-click your database -> Tasks -> Mirror...
3. Click Configure Security and follow the wizard.
4. Ensure both Principal and Mirror servers are correct.
5. Set the port for the mirroring endpoints to 5022.
6. Complete the configuration and click Start Mirroring.
7. Verify the mirroring status by checking the "Database Properties" window.

SQL Server 미러링의 네트워크 및 보안 문제 탐색

설정할 때 SQL Server 데이터베이스 미러링에서 종종 간과되는 한 가지 측면은 네트워크 구성 및 보안 설정의 역할입니다. 서버 네트워크 주소에 연결할 수 없음을 나타내는 오류 1418은 기본 네트워크 문제로 인해 자주 발생합니다. 올바른 포트(1433 및 5022)가 열려 있고 방화벽이 비활성화된 경우에도 라우팅 및 DNS 구성과 같은 다른 네트워크 요소로 인해 통신 오류가 발생할 수 있습니다. 특히 다중 서브넷 환경에서는 두 서버가 서로의 IP 주소를 올바르게 확인하는지 확인하는 것이 중요합니다.

또 다른 과제는 다음과 같습니다. SQL Server 인증 미러링 설정 중 설정. 데이터베이스 미러링을 사용하려면 주 서버와 미러 서버가 모두 인증서 또는 도메인 기반 인증(Kerberos)을 통해 서로 인증해야 합니다. 이 설정이 올바르게 구성되지 않았거나 두 서버 간의 보안 프로토콜이 일치하지 않는 경우 오류 1418이 발생할 수 있습니다. 또한 SQL Server 서비스 계정에는 두 컴퓨터 모두에 대한 올바른 권한, 특히 미러링 끝점에 대한 액세스 권한이 있어야 합니다.

마지막으로 운영 체제 선택도 미러링 작동 방식에 영향을 줄 수 있습니다. Windows 버전에 따라 특히 방화벽 규칙 및 네트워크 트래픽 라우팅을 관리하는 방식에서 TCP 연결을 다르게 처리할 수 있습니다. 두 서버 중 하나의 운영 체제에 오래되었거나 일치하지 않는 네트워크 드라이버가 있는 경우 서버 간 통신이 실패할 수 있습니다. 오류 1418과 같은 연결 문제를 해결하려면 OS가 최신 패치로 최신 상태이고 적절한 서비스가 실행되고 있는지 확인하는 것이 중요합니다.

SQL Server 미러링 설정 및 오류 1418에 대한 일반적인 질문

  1. SQL Server 미러링에서 오류 1418의 원인은 무엇입니까?
  2. 오류 1418은 일반적으로 두 서버 간의 통신 오류로 인해 발생합니다. 방화벽 설정이 잘못되었기 때문일 수 있습니다. mirroring endpoints또는 네트워크 연결 문제.
  3. SQL Server 미러링을 위해 포트가 열려 있는지 어떻게 확인할 수 있나요?
  4. 사용 telnet 명령이나 다음과 같은 스크립트 New-Object System.Net.Sockets.TcpClient PowerShell에서 포트 1433 및 5022가 열려 있는지 테스트합니다.
  5. 미러링을 위해 두 서버가 모두 동일한 도메인에 있어야 합니까?
  6. 아니요. 하지만 도메인 인증을 사용하면 프로세스가 단순화됩니다. 그렇지 않으면 보안을 위해 인증서 기반 인증을 사용해야 합니다. mirroring endpoints.
  7. 데이터베이스 미러링에서 엔드포인트의 역할은 무엇입니까?
  8. 그만큼 CREATE ENDPOINT 명령은 미러링 중에 SQL Server 인스턴스가 통신할 수 있도록 하는 네트워크 인터페이스를 만듭니다. 각 서버에는 작동하는 미러링 엔드포인트가 있어야 합니다.
  9. 다른 SQL Server 버전의 데이터베이스를 미러링할 수 있나요?
  10. 아니요, 데이터베이스 미러링이 제대로 작동하려면 두 SQL Server 인스턴스가 모두 동일한 버전에 있어야 합니다.

데이터베이스 미러링 오류 1418 해결에 대한 최종 생각

오류 1418과 같은 데이터베이스 미러링 오류는 서버 간의 네트워킹 문제로 인해 발생하는 경우가 많습니다. 올바른 포트가 열려 있는지, 방화벽이 구성되었는지, 엔드포인트가 제대로 설정되었는지 확인하면 이 문제를 해결할 수 있습니다.

또한 PowerShell과 같은 도구를 사용하여 네트워크 액세스를 검증하고 서버 간에 인증 프로토콜이 일관되도록 하면 성공 가능성이 높아집니다. 다음 단계를 따르면 고성능 작업을 위한 안정적인 SQL Server 미러링을 달성하는 데 도움이 될 수 있습니다.

데이터베이스 미러링 솔루션에 대한 참조 및 리소스
  1. 오류 1418 및 끝점 설정을 포함한 SQL Server 미러링 구성 및 문제 해결에 대한 자세한 내용은 다음에서 확인할 수 있습니다. 마이크로소프트 SQL 문서 .
  2. SQL Server 미러링에 대한 방화벽 규칙 구성 및 네트워크 문제 해결에 대한 포괄적인 가이드는 다음에서 액세스할 수 있습니다. Windows 방화벽 구성 .
  3. SQL Server 인스턴스 간의 포트 테스트 및 네트워크 확인을 위한 PowerShell 스크립트는 다음에서 사용할 수 있습니다. 파워셸 문서 .
  4. 서버 연결 테스트에 사용되는 Python 소켓 프로그래밍 기술을 보려면 다음 사이트를 방문하세요. Python 소켓 모듈 .