이 항목에서는 데이터베이스 미러링 세션 설정의 문제를 해결하는 데 도움이 되는 정보를 제공합니다.
| 문제 | 요약 |
|---|---|
| 오류 메시지 1418 | 이 SQL Server 메시지는 서버 네트워크 주소에 연결할 수 없거나 존재하지 않음을 나타내며, 네트워크 주소 이름을 확인하고 명령을 다시 발생시키는 것이 좋습니다. 자세한 내용은 MSSQLSERVER_1418 항목을 참조하세요. |
| 계정 | SQL Server가 실행 중인 계정을 올바르게 구성하기 위한 요구 사항을 설명합니다. |
| 엔드포인트 | 각 서버 인스턴스의 데이터베이스 미러링 엔드포인트를 올바르게 구성하기 위한 요구 사항을 설명합니다. |
| systemAddress | 데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름을 지정하기 위한 대안을 요약합니다. |
| 네트워크 액세스 | 각 서버 인스턴스가 TCP를 통해 다른 서버 인스턴스 또는 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항을 문서화합니다. |
| 미러 데이터베이스 준비 | 미러링을 시작할 수 있도록 미러 데이터베이스를 준비하기 위한 요구 사항을 요약합니다. |
| 실패한 파일 만들기 작업 | 실패한 파일 만들기 작업에 응답하는 방법을 설명합니다. |
| Transact-SQL을 사용하여 미러링 시작 | ALTER DATABASE database_name SET PARTNER ='partner_server' 명령문에 대한 필수 순서를 설명합니다. |
| 데이터베이스 간 트랜잭션 | 자동 장애 조치로 인해 의심스러운 트랜잭션의 자동 및 잘못된 해결이 발생할 수 있습니다. 이러한 이유로 데이터베이스 미러링에서는 데이터베이스 간 트랜잭션을 지원하지 않습니다. |
계정
SQL Server가 실행 중인 계정을 올바르게 구성해야 합니다.
계정에 올바른 권한이 있나요?
계정이 동일한 도메인 계정에서 실행되는 경우 구성이 잘못될 가능성이 줄어듭니다.
계정이 다른 도메인에서 실행 중이거나 도메인 계정이 아닌 경우 한 계정의 로그인을 다른 컴퓨터의 마스터 에서 만들어야 하며 해당 로그인에는 엔드포인트에 대한 CONNECT 권한이 부여되어야 합니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요. 여기에는 네트워크 서비스 계정이 포함됩니다.
SQL Server가 로컬 시스템 계정을 사용하는 서비스로 실행 중인 경우 인증에 인증서를 사용해야 합니다. 자세한 내용은 데이터베이스 미러링 엔드포인트에 인증서 사용(Transact-SQL)을 참조하세요.
엔드포인트
엔드포인트를 올바르게 구성해야 합니다.
각 서버 인스턴스(주 서버, 미러 서버 및 미러링 모니터 서버가 있는 경우)에 데이터베이스 미러링 엔드포인트가 있는지 확인합니다. 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL) 를 참조하고 인증 형식에 따라 Windows 인증용 데이터베이스 미러링 엔드포인트 만들기(Transact-SQL) 또는 데이터베이스 미러링 엔드포인트(Transact-SQL)에 인증서를 사용합니다.
포트 번호가 올바른지 확인합니다.
현재 서버 인스턴스의 데이터베이스 미러링 엔드포인트와 연결된 포트를 식별하려면 sys.database_mirroring_endpoints 및 sys.tcp_endpoints 카탈로그 뷰를 사용하세요.
설명하기 어려운 데이터베이스 미러링 설정 문제의 경우 각 서버 인스턴스를 검사하여 올바른 포트에서 수신 대기하는지 여부를 확인하는 것이 좋습니다. 포트 가용성을 확인하는 방법에 대한 자세한 내용은 MSSQLSERVER_1418 참조하세요.
엔드포인트가 시작되었는지 확인합니다(STATE=STARTED). 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.
SELECT state_desc FROM sys.database_mirroring_endpointsstate_desc 열에 대한 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.
엔드포인트를 시작하려면 다음 Transact-SQL 문을 사용합니다.
ALTER ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP (LISTENER_PORT = <port_number>) FOR database_mirroring (ROLE = ALL); GO자세한 내용은 ALTER ENDPOINT(Transact-SQL)를 참조하세요.
ROLE이 올바른지 확인합니다. 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.
SELECT role FROM sys.database_mirroring_endpoints; GO자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.
다른 서버 인스턴스의 서비스 계정에 대한 로그인에는 CONNECT 권한이 필요합니다. 다른 서버의 로그인에 CONNECT 권한이 있는지 확인합니다. 엔드포인트에 대한 CONNECT 권한이 있는 사용자를 확인하려면 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.
SELECT 'Metadata Check'; SELECT EP.name, SP.STATE, CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) AS GRANTOR, SP.TYPE AS PERMISSION, CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) AS GRANTEE FROM sys.server_permissions SP , sys.endpoints EP WHERE SP.major_id = EP.endpoint_id ORDER BY Permission,grantor, grantee; GO
시스템 주소
데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름에 대해 시스템을 명확하게 식별하는 모든 이름을 사용할 수 있습니다. 서버 주소는 시스템 이름(시스템이 동일한 도메인에 있는 경우), 정규화된 도메인 이름 또는 IP 주소(가급적 고정 IP 주소)일 수 있습니다. 정규화된 도메인 이름을 사용하면 작동이 보장됩니다. 자세한 내용은 서버 네트워크 주소 지정(데이터베이스 미러링)을 참조하세요.
네트워크 액세스
각 서버 인스턴스는 TCP를 통해 다른 서버 인스턴스 또는 인스턴스의 포트에 액세스할 수 있어야 합니다. 이는 서버 인스턴스가 서로 신뢰하지 않는 다른 도메인(신뢰할 수 없는 도메인)에 있는 경우에 특히 중요합니다. 이렇게 하면 서버 인스턴스 간의 통신이 많이 제한됩니다.
미러 데이터베이스 준비
미러링을 처음으로 시작하거나 미러링이 제거된 후 다시 시작하는지 여부에 관계없이 미러 데이터베이스가 미러링에 대해 준비되었는지 확인합니다.
미러 서버에서 미러 데이터베이스를 만들 때 동일한 데이터베이스 이름 WITH NORECOVERY를 지정하는 주 데이터베이스의 백업을 복원해야 합니다. 또한 백업을 수행한 후에 만든 모든 로그 백업도 WITH NORECOVERY와 함께 적용해야 합니다.
또한 가능한 경우 미러 데이터베이스의 파일 경로(드라이브 문자 포함)가 주 데이터베이스의 경로와 동일한 것이 좋습니다. 예를 들어 주 데이터베이스가 드라이브 'F:'에 있지만 미러 시스템에 F: 드라이브가 없는 경우 파일 경로가 달라야 하는 경우 RESTORE 문에 MOVE 옵션을 포함해야 합니다.
중요합니다
미러 데이터베이스를 만들 때 데이터베이스 파일을 이동하는 경우 나중에 미러링을 일시 중단하지 않고 데이터베이스에 파일을 추가할 수 없습니다.
데이터베이스 미러링이 중지된 경우 미러링을 다시 시작하기 전에 주 데이터베이스에서 수행된 모든 후속 로그 백업을 미러 데이터베이스에 적용해야 합니다.
자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.
실패한 Create-File 작업
미러링 세션에 영향을 주지 않고 파일을 추가하려면 파일 경로가 두 서버에 모두 있어야 합니다. 따라서 미러 데이터베이스를 만들 때 데이터베이스 파일을 이동하는 경우 미러 데이터베이스에서 나중에 추가 파일 작업이 실패하여 미러링이 일시 중단될 수 있습니다.
문제를 해결하려면 다음을 수행합니다.
데이터베이스 소유자는 미러링 세션을 제거하고 추가된 파일이 포함된 파일 그룹의 전체 백업을 복원해야 합니다.
그런 다음 소유자는 주 서버에서 추가 파일 작업이 포함된 로그를 백업하고 WITH NORECOVERY 및 WITH MOVE 옵션을 사용하여 미러 데이터베이스에서 로그 백업을 수동으로 복원해야 합니다. 이렇게 하면 미러 서버에서 지정된 파일 경로가 만들어지고 새 파일이 해당 위치로 복원됩니다.
새 미러링 세션에 대한 데이터베이스를 준비하려면 소유자는 주 서버에서 다른 미해결 로그 백업도 복구하지 않고 복원해야 합니다.
자세한 내용은 데이터베이스 미러링 제거(SQL Server), 미러링용 미러 데이터베이스 준비(SQL Server), Windows 인증을 사용하여 데이터베이스 미러링 세션 설정(Transact-SQL), 데이터베이스 미러링 엔드포인트(Transact-SQL)에 대한 인증서 사용 또는 Windows 인증을 사용하여 데이터베이스 미러링 세션 설정(SQL Server Management Studio)을 참조하세요.
Transact-SQL 사용하여 미러링 시작
ALTER DATABASE database_name SET PARTNER ='partner_server' 문이 실행되는 순서는 매우 중요합니다.
첫 번째 명령문은 미러 서버에서 실행되어야 합니다. 이 명령문이 실행되면 미러 서버는 다른 서버 인스턴스에 연결하지 않습니다. 대신 미러 서버는 주 서버에서 미러 서버에 연결할 때까지 기다리도록 데이터베이스에 지시합니다.
두 번째 ALTER DATABASE 문은 주 서버에서 실행되어야 합니다. 이 문을 사용하면 주 서버가 미러 서버에 연결하려고 합니다. 해당 연결을 만든 후 미러는 다른 연결의 주 서버에 연결을 시도합니다.
자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하세요.
비고
SQL Server Management Studio를 사용하여 미러링을 시작하는 방법에 대한 자세한 내용은 Windows 인증을 사용하여 데이터베이스 미러링 세션 설정(SQL Server Management Studio)을 참조하세요.
데이터베이스 간 트랜잭션
데이터베이스가 자동 장애 조치(failover)를 사용하여 고-안전 모드로 미러링되는 경우, 자동 장애 조치로 인해 불확실 거래가 자동으로 잘못 해결될 수 있습니다. 데이터베이스 간 트랜잭션이 커밋되는 동안 두 데이터베이스에서 자동 장애 조치(failover)가 발생하면 데이터베이스 간에 논리적 불일치가 발생할 수 있습니다.
자동 장애 조치(failover)의 영향을 받을 수 있는 데이터베이스 간 트랜잭션 유형은 다음과 같습니다.
동일한 SQL Server 인스턴스에서 여러 데이터베이스를 업데이트하는 트랜잭션입니다.
MS DTC(Microsoft Distributed Transaction Coordinator)를 사용하는 트랜잭션입니다.
자세한 내용은 데이터베이스 미러링 또는 AlwaysOn 가용성 그룹(SQL Server)에서 지원되지 않는 데이터베이스 간 트랜잭션을 참조하세요.
또한 참조하십시오
데이터베이스 미러링 설정(SQL Server)
데이터베이스 미러링 및 AlwaysOn 가용성 그룹에 대한 전송 보안(SQL Server)