데이터베이스 미러링 구성 문제 해결(SQL Server)Troubleshoot Database Mirroring Configuration (SQL Server)

이 항목에서는 데이터베이스 미러링 세션을 설정할 때 발생하는 문제를 해결하는 데 도움이 되는 정보를 제공합니다.This topic provides information to help you troubleshoot problems in setting up a database mirroring session.

참고

데이터베이스 미러링을 위한 선행 조건을 모두 충족하는지 확인하세요.Ensure that you are meeting all the prerequisites for database mirroring.

문제점Issue 요약Summary
오류 메시지 1418Error Message 1418 SQL ServerSQL Server 메시지는 서버 네트워크 주소가 없거나 도달할 수 없음을 나타내며 네트워크 주소 이름을 확인한 후 명령을 다시 실행하도록 제안합니다.This SQL ServerSQL Server message indicates that the server network address cannot be reached or does not exist, and it suggests that you verify the network address name and reissue the command.
계정Accounts SQL ServerSQL Server 가 실행되고 있는 계정을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다.Discusses requirements for correctly configuring the accounts under which SQL ServerSQL Server is running.
끝점Endpoints 각 서버 인스턴스의 데이터베이스 미러링 끝점을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다.Discusses requirements for correctly configuring the database mirroring endpoint of each server instance.
SystemAddressSystemAddress 데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름을 지정하는 대체 방법을 요약합니다.Summarizes the alternatives for specifying the system name of a server instance in a database mirroring configuration.
네트워크 액세스Network access 각 서버 인스턴스에서 TCP를 통해 다른 서버 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항에 대해 설명합니다.Documents the requirement that each the server instance be able to access the ports of the other server instance or instances over TCP.
미러 데이터베이스 준비Mirror database preparation 미러링이 시작될 수 있도록 미러 데이터베이스를 준비하기 위한 요구 사항을 요약합니다.Summarizes the requirements for preparing the mirror database to enable mirroring to start.
파일 생성 작업 실패Failed create-file operation 파일 생성 작업이 실패할 경우의 대처 방법에 대해 설명합니다.Describes how to respond to a failed create-file operation.
Transact-SQL을 사용하여 미러링 시작Starting mirroring by Using Transact-SQL ALTER DATABASE database_name SET PARTNER ='partner_server' 문의 필요한 순서에 대해 설명합니다.Describes the required order for ALTER DATABASE database_name SET PARTNER ='partner_server' statements.
데이터베이스 간 트랜잭션Cross-Database Transactions 자동 장애 조치(Failover)를 사용할 경우 미결 트랜잭션이 자동으로 잘못 해결될 수 있습니다.An automatic failover could lead to automatic and possibly incorrect resolution of in-doubt transactions. 이러한 이유로 데이터베이스 미러링은 데이터베이스 간 트랜잭션을 지원하지 않습니다.For this reason database mirroring does not support cross-database transactions.

계정 Accounts

SQL ServerSQL Server 를 실행하고 있는 계정이 올바르게 구성되어 있어야 합니다.The accounts under which SQL ServerSQL Server is running must be correctly configured.

  1. 계정에 올바른 권한이 있어야 합니다.Do the accounts have the correct permissions?

    1. 계정이 동일한 도메인 계정에서 실행되는 경우 잘못 구성할 가능성이 줄어듭니다.If the accounts are running in the same domain accounts, the chances of misconfiguration are reduced.

    2. 계정이 서로 다른 도메인에서 실행되거나 도메인 계정이 아닐 경우 다른 컴퓨터의 master 에 한 계정의 로그인을 만들고 끝점에 대한 CONNECT 권한을 해당 로그인에 부여해야 합니다.If the accounts are running in different domains or are not domain accounts, the login of one account must be created in master on the other computer, and that login must be granted CONNECT permissions on the endpoint. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요.For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server). 여기에는 네트워크 서비스 계정이 포함됩니다.This includes the Network Service account.

  2. SQL ServerSQL Server가 로컬 시스템 계정을 사용하는 서비스로 실행되는 경우 인증서를 사용하여 인증해야 합니다.If SQL ServerSQL Server is running as a service that is using the local system account, you must use certificates for authentication. 자세한 내용은 이 항목의 뒷부분에 나오는 데이터베이스 미러링 끝점에 대한 인증서 사용(Transact-SQL)을 참조하세요.For more information, see Use Certificates for a Database Mirroring Endpoint (Transact-SQL).

끝점 Endpoints

끝점을 올바르게 구성해야 합니다.Endpoints must be correctly configured.

  1. 각 서버 인스턴스(주 서버, 미러 서버 및 미러링 모니터 서버)에는 데이터베이스 미러링 끝점이 있어야 합니다.Make sure that each server instance (the principal server, mirror server, and witness, if any) has a database mirroring endpoint. 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL) 및 인증 형식에 따라 Windows 인증에 대한 데이터베이스 미러링 끝점 만들기(Transact-SQL) 또는 데이터베이스 미러링 끝점에 대한 인증서 사용(Transact-SQL)을 참조하세요.For more information, see sys.database_mirroring_endpoints (Transact-SQL) and, depending on the form of authentication, either Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Use Certificates for a Database Mirroring Endpoint (Transact-SQL).

  2. 포트 번호가 정확한지 확인합니다.Check that the port numbers are correct.

    서버 인스턴스의 데이터베이스 미러링 끝점과 현재 연결된 포트를 식별하려면 sys.database_mirroring_endpointssys.tcp_endpoints 카탈로그 뷰를 사용합니다.To identify the port currently associated with database mirroring endpoint of a server instance, use the sys.database_mirroring_endpoints and sys.tcp_endpoints catalog views.

  3. 설명하기 어려운 데이터베이스 미러링 설치 문제의 경우 각 서버 인스턴스를 조사하여 올바른 포트에서 수신하고 있는지 확인하는 것이 좋습니다.For database mirroring setup issues that are difficult to explain, we recommend that you inspect each server instance to determine whether it is listening on the correct ports.

  4. 끝점이 시작되었는지 확인합니다(STATE=STARTED).Make sure that the endpoints are started (STATE=STARTED). 각 서버 인스턴스에서 다음 Transact-SQLTransact-SQL 문을 사용합니다.On each server instance, use the following Transact-SQLTransact-SQL statement.

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    state_desc 열에 대한 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.For more information about the state_desc column, see sys.database_mirroring_endpoints (Transact-SQL).

    끝점을 시작하려면 다음 Transact-SQLTransact-SQL 문을 사용합니다.To start an endpoint, use the following Transact-SQLTransact-SQL statement.

    ALTER ENDPOINT Endpoint_Mirroring   
    STATE = STARTED   
    AS TCP (LISTENER_PORT = <port_number>)  
    FOR database_mirroring (ROLE = ALL);  
    GO  
    

    자세한 내용은 ALTER ENDPOINT(Transact-SQL)를 참조하세요.For more information, see ALTER ENDPOINT (Transact-SQL).

  5. ROLE이 정확한지 확인합니다.Check that the ROLE is correct. 각 서버 인스턴스에서 다음 Transact-SQLTransact-SQL 문을 사용합니다.On each server instance use the following Transact-SQLTransact-SQL statement.

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

    자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.For more information, see sys.database_mirroring_endpoints (Transact-SQL).

  6. 다른 서버 인스턴스에서 서비스 계정에 로그인하려면 CONNECT 권한이 필요합니다.The login for the service account from the other server instance requires CONNECT permission. 다른 서버에서 로그인할 경우 CONNECT 권한이 있는지 확인합니다.Make sure that the login from the other server has CONNECT permission. 끝점에 대한 CONNECT 권한이 있는 사용자를 파악하려면 각 서버 인스턴스에서 다음 Transact-SQLTransact-SQL 문을 사용합니다.To determine who has CONNECT permission for an endpoint, on each server instance use the following Transact-SQLTransact-SQL statement.

    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  
    

시스템 주소 System Address

데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름에는 시스템을 명확하게 식별하는 모든 이름을 사용할 수 있습니다.For the system name of a server instance in a database mirroring configuration, you can use any name that unambiguously identifies the system. 서버 주소는 시스템 이름(시스템이 같은 도메인에 있는 경우), 정규화된 도메인 이름 또는 IP 주소(가급적 고정 IP 주소)일 수 있습니다.The server address can be a system name (if the systems are in the same domain), a fully qualified domain name, or an IP address (preferably, a static IP address). 정규화된 도메인 이름을 사용하는 것이 좋습니다.Using the fully qualified domain name is guaranteed to work. 자세햔 내용은 서버 네트워크 주소 지정(데이터베이스 미러링)을 사용합니다.For more information, see Specify a Server Network Address (Database Mirroring).

Network Access Network Access

각 서버 인스턴스에서 TCP를 통해 다른 서버 인스턴스의 포트에 액세스할 수 있어야 합니다.Each server instance must be able to access the ports of the other server instance or instances over TCP. 이는 서버 인스턴스가 서로 트러스트하지 않는 다른 도메인(트러스트되지 않은 도메인)에 있을 경우 특히 유용합니다.This is especially important if the server instances are in different domains that do not trust each other (untrusted domains). 이 경우 서버 인스턴스 간의 통신은 대부분 제한됩니다.This restricts much of the communication between the server instances.

Mirror Database Preparation Mirror Database Preparation

처음으로 미러링을 시작하는 것이든 미러링을 제거한 후 다시 시작하는 것이든 관계없이 미러 데이터베이스가 미러링을 위한 준비를 완료했는지 확인합니다.Whether starting mirroring for the first time or starting it again after mirroring was removed, verify that the mirror database is prepared for mirroring.

미러 서버에 미러 데이터베이스를 만들 때는 WITH NORECOVERY로 동일한 데이터베이스 이름을 지정하여 주 데이터베이스의 백업을 복원하도록 해야 합니다.When you create the mirror database on the mirror server, make sure that you restore the backup of the principal database specifying the same database name WITH NORECOVERY. 백업 후에 생성된 모든 로그 백업도 WITH NORECOVERY를 사용하여 적용해야 합니다.Also, all log backups created after that backup was taken must also be applied, again WITH NORECOVERY.

또한 가능한 경우 드라이브 문자를 포함한 미러 데이터베이스의 파일 경로가 주 데이터베이스의 경로와 동일한 것이 좋습니다.Also, we recommend that, if it is possible, the file path (including the drive letter) of the mirror database be identical to the path of the principal database. 주 데이터베이스는 'F:' 드라이브에 있는데 미러 시스템에는 F: 드라이브가 없는 경우 등 파일 경로가 달라야 하는 경우에는 RESTORE 문에 MOVE 옵션을 포함해야 합니다.If the file paths must differ, for example, if the principal database is on drive 'F:' but the mirror system lacks an F: drive, you must include the MOVE option in the RESTORE statement.

중요

미러 데이터베이스를 만들 때 데이터베이스 파일을 이동한 경우 나중에 데이터베이스에 파일을 추가하려면 미러링을 일시 중지해야 할 수도 있습니다.If you move the database files when you are creating the mirror database, you might be unable to add files to the database later without mirroring being suspended.

데이터베이스 미러링이 중지된 경우 주 데이터베이스에서 수행된 모든 후속 로그 백업을 미러 데이터베이스에 적용해야만 미러링을 다시 시작할 수 있습니다.If database mirroring has been stopped, all subsequent log backups taken on the principal database must be applied to the mirror database before mirroring can be restarted.

자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)버전에서는 데이터베이스 미러링을 사용할 수 없습니다.For more information, see Prepare a Mirror Database for Mirroring (SQL Server).

Failed Create-File Operation Failed Create-File Operation

미러링 세션에 영향을 주지 않고 파일을 추가하려면 파일의 경로가 두 서버 모두에 있어야 합니다.Adding a file without impacting a mirroring session requires that the path of the file exist on both servers. 따라서 미러 데이터베이스를 만들 때 데이터베이스 파일을 이동하면 나중에 미러 데이터베이스에 파일을 추가할 수 없고 미러링이 일시 중지될 수 있습니다.Therefore, if you move the database files when creating the mirror database, a later add-file operation might fail on the mirror database and cause mirroring to be suspended.

이 문제를 해결하려면To fix the problem:

  1. 데이터베이스 소유자가 미러링 세션을 제거하고 추가된 파일이 들어 있는 파일 그룹의 전체 백업을 복원해야 합니다.The database owner must remove the mirroring session and restore a full backup of the filegroup that contains the added file.

  2. 그러 다음 소유자가 주 서버에서 파일 추가 작업이 포함된 로그를 백업하고 WITH NORECOVERY 및 WITH MOVE 옵션을 사용하여 미러 데이터베이스에 로그 백업을 수동으로 복원해야 합니다.The owner must then back up the log containing the add-file operation on the principal server and manually restore the log backup on the mirror database using the WITH NORECOVERY and WITH MOVE options. 이렇게 하면 미러 서버에 지정된 파일 경로가 만들어지고 새 파일이 이 위치에 복원됩니다.Doing this creates the specified file path on the mirror server and restores the new file to that location.

  3. 새 미러링 세션에 대비해서 데이터베이스를 준비하려면 소유자가 주 서버에서 WITH NO RECOVERY 및 기타 처리 중인 로그 백업도 복원해야 합니다.To prepare the database for a new mirroring session, the owner must also restore WITH NO RECOVERY any other outstanding log backups from the principal server.

    자세한 내용은 데이터베이스 미러링 제거(SQL Server), 미러 데이터베이스의 미러링 준비(SQL Server), Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(Transact-SQL), 데이터베이스 미러링 끝점에 대한 인증서 사용(Transact-SQL) 또는 Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(SQL Server Management Studio)을 참조하세요.For more information, see Removing Database Mirroring (SQL Server), Prepare a Mirror Database for Mirroring (SQL Server), Establish a Database Mirroring Session Using Windows Authentication (Transact-SQL), Use Certificates for a Database Mirroring Endpoint (Transact-SQL), or Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

Transact-SQL을 사용하여 미러링 시작 Starting mirroring by Using Transact-SQL

ALTER DATABASE database_name SET PARTNER ='partner_server' 문을 실행하는 순서는 매우 중요합니다.The order in which the ALTER DATABASE database_name SET PARTNER ='partner_server' statements are issued is very important.

  1. 미러 서버에서 첫 번째 문을 실행해야 합니다.The first statement must be run on the mirror server. 이 문을 실행할 때는 미러 서버에서 다른 서버 인스턴스에 연결하지 않고When this statement is issued, the mirror server does not try to contact any other server instance. 대신 주 서버가 미러 서버에 접속할 때까지 기다리도록 해당 데이터베이스에 지시합니다.Instead, the mirror server instructs its database to wait until the mirror server has been contacted by the principal server.

  2. 주 서버에서 두 번째 ALTER DATABASE 문을 실행해야 합니다.The second ALTER DATABASE statement must be run on the principal server. 이 문을 실행하면 주 서버가 미러 서버에 연결을 시도합니다.This statement causes the principal server to try to connect to the mirror server. 이 연결이 생성되면 미러 서버는 다른 연결을 통해 주 서버에 연결을 시도합니다.After that connection is created, the mirror then tries to connect to the principal server on another connection.

    자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하세요.For more information, see ALTER DATABASE (Transact-SQL).

참고

SQL Server Management StudioSQL Server Management Studio를 사용하여 미러링을 시작하는 방법은 Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(SQL Server Management Studio)을 참조하세요.For information about using SQL Server Management StudioSQL Server Management Studio to start mirroring, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

데이터베이스 간 트랜잭션 Cross-Database Transactions

자동 장애 조치(Failover) 있는 보호 우선 모드로 데이터베이스를 미러링하는 경우 자동 장애 조치로 인해 미결 트랜잭션이 자동으로 잘못 해결될 수 있습니다.When a database is being mirrored in high-safety mode with automatic failover, an automatic failover could lead to automatic and possibly incorrect resolution of in-doubt transactions. 데이터베이스 간 트랜잭션을 커밋하는 동안 두 데이터베이스 중 하나에서 자동 장애 조치가 수행되면 데이터베이스 간에 논리적 불일치가 발생할 수 있습니다.If an automatic failover occurs on either database while a cross-database transaction is being committed, logical inconsistencies can occur between the databases.

자동 장애 조치의 영향을 받을 수 있는 데이터베이스 간 트랜잭션 유형은 다음과 같습니다.The types of cross-database transactions that can be affected by an automatic failover include the following:

관련 항목:See Also

데이터베이스 미러링 설정(SQL Server) Setting Up Database Mirroring (SQL Server)
데이터베이스 미러링 및 Always On 가용성 그룹에 대한 전송 보안(SQL Server)Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)