Azure Backup을 사용하여 SQL Server 데이터베이스 백업 문제 해결
이 문서에서는 Azure 가상 머신에서 실행되는 SQL Server 데이터베이스의 문제 해결 정보를 제공합니다.
백업 프로세스 및 제한에 대한 자세한 내용은 Azure VM의 SQL Server 백업 정보를 참조하세요.
SQL Server 사용 권한
가상 머신에서 SQL Server 데이터베이스에 대한 보호를 구성하려면 가상 머신에 AzureBackupWindowsWorkload 확장을 설치해야 합니다. UserErrorSQLNoSysadminMembership 오류가 발생하면 SQL Server 인스턴스에 필요한 백업 권한이 없다는 의미입니다. 이 오류를 해결하려면 VM 권한 설정의 단계를 수행합니다.
검색 및 구성 문제 해결
Recovery Services 자격 증명 모음 만들기 및 구성이 완료되면 데이터베이스 검색 및 백업 구성은 2단계 프로세스입니다.
백업 구성 중에 SQL VM 및 해당 인스턴스가 VM에서 DB 검색 및 백업 구성에 표시되지 않으면(위의 이미지 참조) 다음을 확인합니다.
1단계: VM에서 DB 검색
- VM이 검색된 VM 목록에 나열되지 않고 다른 자격 증명 모음의 SQL 백업에도 등록되지 않은 경우 SQL Server 백업 검색 단계를 따릅니다.
2단계: 백업 구성
- SQL VM이 데이터베이스 보호에 사용되는 것과 동일한 자격 증명 모음에 등록된 자격 증명 모음인 경우 백업 구성 단계를 따릅니다.
SQL VM을 새 자격 증명 모음에 등록해야 하는 경우 이전 자격 증명 모음에서 등록을 취소해야 합니다. 자격 증명 모음에서 SQL VM을 등록 취소하려면 보호된 모든 데이터 원본의 보호를 중지해야 합니다. 그 후 백업된 데이터를 삭제할 수 있습니다. 백업된 데이터 삭제는 파괴적 작업입니다. SQL VM 등록 취소와 관련된 모든 예방 조치를 검토하고 수행했으면 이 동일한 VM을 새 자격 증명 모음에 등록하고 백업 작업을 다시 시도합니다.
백업 및 복구 문제 해결
때때로 백업 및 복원 작업에서 임의의 오류가 발생하거나 이러한 작업이 중단될 수 있습니다. VM의 바이러스 백신 프로그램이 그 원인일 수 있습니다. 모범 사례로써 다음 단계를 따르는 것이 좋습니다.
바이러스 스캔에서 다음 폴더를 제외합니다.
C:\Program Files\Azure Workload Backup
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.RecoveryServices.WorkloadBackup.AzureBackupWindowsWorkload
C:\
를 해당하는 SystemDrive 문자로 바꿉니다.VM 내에서 실행되는 다음 세 가지 프로세스를 바이러스 백신 스캔에서 제외합니다.
- IaasWLPluginSvc.exe
- IaaSWorkloadCoordinatorService.exe
- TriggerExtensionJob.exe
또한 SQL은 바이러스 백신 프로그램 사용에 대한 몇 가지 지침을 제공합니다. 자세한 내용은 이 문서를 참조하세요.
여러 SQL Server 인스턴스를 사용하는 VM의 잘못된 인스턴스
VM 내에서 실행되는 모든 SQL 인스턴스가 정상 상태로 보고되는 경우에만 SQL VM으로 복원할 수 있습니다. 하나 이상의 인스턴스에 "문제"가 있는 경우 VM이 복원 대상으로 표시되지 않습니다. 이로 인해 복원 작업 중에 다중 인스턴스 VM이 "서버" 드롭다운 목록에 표시되지 않을 수 있습니다.
백업 구성에서 VM에 있는 모든 SQL 인스턴스의 "백업 준비 상태"를 확인할 수 있습니다.
정상적인 SQL 인스턴스에 복원을 트리거하려면 다음 단계를 수행합니다.
SQL VM에 로그인하고
C:\Program Files\Azure Workload Backup\bin
으로 이동합니다.ExtensionSettingsOverrides.json
이라는 JSON 파일을 만듭니다(아직 없는 경우). 이 파일이 VM에 이미 있는 경우 해당 파일을 계속 사용합니다.JSON 파일에 다음 콘텐츠를 추가하고 파일을 저장합니다.
{ "<ExistingKey1>":"<ExistingValue1>", …………………………………………………… , "whitelistedInstancesForInquiry": "FaultyInstance_1,FaultyInstance_2" } Sample content: { "whitelistedInstancesForInquiry": "CRPPA,CRPPB " }
Azure Portal에서(백업 준비 상태를 확인할 수 있는 위치와 동일) 영향을 받는 서버에 대한 DB 다시 검색 작업을 트리거합니다. VM이 복원 작업의 대상으로 표시되기 시작합니다.
복원 작업이 완료되면 ExtensionSettingsOverrides.json 파일에서 whitelistedInstancesForInquiry 항목을 제거합니다.
오류 메시지
백업 형식이 지원되지 않습니다
심각도 | 설명 | 가능한 원인 | 권장 작업 |
---|---|---|---|
Warning | 이 데이터베이스의 현재 설정은 연결된 정책에 있는 특정 백업 형식을 지원하지 않습니다. | 정책의 모든 백업 형식이 지원되도록 데이터베이스 설정을 수정합니다. 또는 지원되는 백업 형식만 포함하도록 현재 정책을 변경합니다. 이렇게 하지 않으면 예약된 백업 중에 지원되지 않는 백업 형식을 건너뛰거나, 주문형 백업의 경우에는 백업 작업이 실패합니다. |
UserErrorSQLPODoesNotSupportBackupType
오류 메시지 | 가능한 원인 | 권장 작업 |
---|---|---|
SQL 데이터베이스는 요청된 백업 형식을 지원하지 않습니다. | 요청된 백업 유형을 데이터베이스 복구 모델에서 허용하지 않을 때 발생합니다. 이 오류는 다음과 같은 상황에서 발생할 수 있습니다.
|
단순 복구 모델에서 데이터베이스에 대한 로그 백업이 실패하면 다음 옵션 중 하나를 시도합니다.
|
OperationCancelledBecauseConflictingOperationRunningUserError
오류 메시지 | 가능한 원인 | 권장 작업 |
---|---|---|
충돌하는 작업이 동일한 데이터베이스에서 이미 실행 중이기 때문에 작업이 취소되었습니다. | 주문형으로 트리거되거나 예약된 백업 작업이 동일한 데이터베이스의 Azure Backup 확장에 의해 트리거되어 이미 실행 중인 백업 작업과 충돌하는 경우 이 오류가 발생할 수 있습니다. 이 오류 코드가 표시될 수 있는 시나리오는 다음과 같습니다.
|
충돌하는 작업이 실패한 후 작업을 다시 시작합니다. |
UserErrorFileManipulationIsNotAllowedDuringBackup
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
데이터베이스에서의 백업, 파일 조작 작업(예: ALTER DATABASE ADD FILE) 및 암호화 변경 사항은 직렬화되어야 합니다. | 다음은 이 오류 코드가 나타날 수 있는 원인입니다.
|
다른 백업 제품을 사용하지 않도록 설정하여 문제를 해결합니다. |
UserErrorSQLPODoesNotExist
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
SQL 데이터베이스가 존재하지 않습니다. | 데이터베이스 삭제되었거나 이름이 변경되었습니다. | 데이터베이스가 실수로 삭제되었거나 이름이 변경되었는지 확인합니다. 데이터베이스가 실수로 삭제된 경우 백업을 계속하려면 데이터베이스를 원래 위치로 복원합니다. 데이터베이스를 삭제하고 향후 백업이 필요하지 않은 경우 Recovery Services 자격 증명 모음에서 백업 데이터 유지 또는 백업 데이터 삭제와 함께 백업 중지를 선택합니다. 자세한 내용은 백업한 SQL Server 데이터베이스 관리 및 모니터링을 참조하세요. |
UserErrorSQLLSNValidationFailure
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
로그 체인이 손상되었습니다. | 로그 체인을 자르는 또 다른 백업 솔루션을 통해 데이터베이스 또는 VM이 백업됩니다. |
|
UserErrorOpeningSQLConnection
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
Azure Backup은 SQL 인스턴스에 연결할 수 없습니다. | Azure Backup이 SQL Server 인스턴스에 연결할 수 없습니다. | Azure Portal 오류 메뉴의 추가 세부 정보를 사용하여 근본 원인의 범위를 좁힙니다. 오류를 해결하려면 SQL 백업 문제 해결을 참조하세요.
|
UserErrorParentFullBackupMissing
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
이 데이터 원본에 대한 첫 번째 전체 백업이 없습니다. | 데이터베이스에 대한 전체 백업이 누락되었습니다. 로그 백업 및 차등 백업은 전체 백업의 상위 백업이므로, 차등 백업 또는 로그 백업을 트리거하기 전에 전체 백업을 수행해야 합니다. | 주문형 전체 백업을 트리거합니다. |
UserErrorBackupFailedAsTransactionLogIsFull
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
데이터 원본의 트랜잭션 로그가 꽉 차서 백업을 수행할 수 없습니다. | 데이터베이스 트랜잭션 로그 공간이 꽉 찼습니다. | 이 문제를 해결하려면 SQL Server 설명서를 참조하세요. |
UserErrorCannotRestoreExistingDBWithoutForceOverwrite
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
대상 위치에 이름이 같은 데이터베이스가 이미 있습니다. | 타겟 복원 대상에 이름이 같은 데이터베이스가 이미 있습니다. |
|
UserErrorRestoreFailedDatabaseCannotBeOfflined
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
데이터베이스를 오프라인 상태로 만들지 못해서 복원에 실패했습니다. | 복원 작업을 수행하는 동안 대상 데이터베이스를 오프라인으로 전환해야 합니다. Azure Backup은 이 데이터를 오프라인으로 전환할 수 없습니다. | Azure Portal 오류 메뉴의 추가 세부 정보를 사용하여 근본 원인의 범위를 좁힙니다. 자세한 내용은 SQL Server 설명서를 참조하세요. |
WlExtGenericIOFaultUserError
오류 메시지 | 가능한 원인 | 권장 작업 |
---|---|---|
작업을 수행하는 동안 입출력 오류가 발생했습니다. 가상 머신에서 일반적인 IO 오류를 확인합니다. | 대상에 대한 액세스 권한 또는 공간 제약 조건 | 가상 머신에서 일반적인 IO 오류를 확인합니다. 머신의 대상 드라이브/네트워크 공유가 다음 조건을 충족하는지 확인합니다. 자세한 내용은 파일로 복원을 참조하세요. |
UserErrorCannotFindServerCertificateWithThumbprint
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
대상에서 지문이 포함된 서버 인증서를 찾을 수 없습니다. | 대상 인스턴스의 master 데이터베이스에 유효한 암호화 지문이 없습니다. | 원본 인스턴스에서 사용되는 유효한 인증서 지문을 대상 인스턴스로 가져옵니다. |
UserErrorRestoreNotPossibleBecauseLogBackupContainsBulkLoggedChanges
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
복구에 사용되는 로그 백업에 대량 로그된 변경 내용이 포함되어 있습니다. SQL 지침에 따라 임의의 시점에서 중지하도록 사용할 수 없습니다. | 데이터베이스가 대량 로그 복구 모드인 경우 대량 로그 트랜잭션과 다음 로그 트랜잭션 간에 데이터를 복구할 수 없습니다. | 다른 복구 시점을 선택합니다. 자세히 알아보기. |
FabricSvcBackupPreferenceCheckFailedUserError
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
가용성 그룹의 일부 노드가 등록되지 않아서 SQL Always On 가용성 그룹에 대한 백업 기본 설정을 충족할 수 없습니다. | 백업을 수행하는 데 필요한 노드가 등록되지 않았거나 연결할 수 없습니다. |
|
VMNotInRunningStateUserError
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
SQL 서버 VM이 종료되어 Azure Backup 서비스에 액세스할 수 없습니다. | VM이 종료되었습니다. | SQL Server 인스턴스가 실행 중인지 확인합니다. |
GuestAgentStatusUnavailableUserError
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
Azure Backup 서비스가 Azure VM 게스트 에이전트를 사용하여 백업을 수행하는 데 대상 서버에서 게스트 에이전트를 사용할 수 없습니다. | 게스트 에이전트가 활성화되지 않았거나 비정상 상태입니다. | VM 게스트 에이전트를 수동으로 설치합니다. |
AutoProtectionCancelledOrNotValid
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
자동 보호 의도가 제거되었거나 더 이상 유효하지 않습니다. | SQL Server 인스턴스에서 자동 보호를 사용하도록 설정하면 백업 구성 작업이 해당 인스턴스에 있는 모든 데이터베이스에 대해 실행됩니다. 작업을 실행하는 동안 자동 보호를 사용하지 않도록 설정하는 경우 In-Progress 작업이 이 오류 코드로 취소됩니다. | 나머지 데이터베이스를 모두 보호하기 위해 다시 한 번 자동 보호를 사용하도록 설정합니다. |
CloudDosAbsoluteLimitReached
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
24시간 동안 허용되는 작업 수 제한에 도달하여 작업이 차단되었습니다. | 24시간 동안 허용되는 최대 작업 제한에 도달하면 이 오류가 발생합니다. 예를 들어 매일 트리거할 수 있는 백업 구성 작업 수 제한에 도달했는데 새 항목에서 백업을 구성하려고 시도하면 이 오류가 발생합니다. |
일반적으로 24시간 후에 작업을 다시 시도하면 이 문제가 해결됩니다. 이렇게 해도 문제가 계속되면 Microsoft 지원에 문의하여 도움을 받을 수 있습니다. |
CloudDosAbsoluteLimitReachedWithRetry
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
자격 증명 모음이 24시간 동안 허용되는 최대 작업 제한에 도달하여 작업이 차단되었습니다. | 24시간 동안 허용되는 최대 작업 제한에 도달하면 이 오류가 발생합니다. 이 오류는 일반적으로 정책 수정 또는 자동 보호와 같은 대규모 작업을 수행할 때 발생합니다. CloudDosAbsoluteLimitReached와 달리, 이 상태를 해결하기 위해 할 수 있는 일이 많지 않습니다. 사실, Azure Backup 서비스는 의심스러운 모든 항목에 대해 내부적으로 작업을 다시 시도합니다. 예를 들어 정책으로 보호되는 여러 데이터 원본이 있는데 이 정책을 수정하려고 하면 보호된 각 항목에 대한 보호 구성 작업이 트리거되고 경우에 따라 매일 이러한 작업에 허용되는 최대 제한에 도달할 수 있습니다. |
Azure Backup 서비스는 24시간 후에 자동으로 이 작업을 다시 시도합니다. |
WorkloadExtensionNotReachable
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
AzureBackup 워크로드 확장 작업이 실패했습니다. | VM이 종료되거나 인터넷 연결 문제로 인해 VM이 Azure Backup 서비스에 연결할 수 없습니다. |
UserErrorVMInternetConnectivityIssue
오류 메시지 | 가능한 원인 | 권장 조치 |
---|---|---|
VM이 인터넷 연결 문제로 인해 Azure Backup 서비스에 연결할 수 없습니다. | 원인 1: VM에서 Azure Backup 서비스, Azure Storage 또는 Microsoft Entra 서비스에 대한 아웃바운드 연결이 필요합니다. 원인 2: GPO(그룹 정책 개체) 정책은 TLS 통신에 필요한 암호화 그룹을 제한합니다. |
원인 1에 대한 권장 사항: 원인 2에 대한 권장 사항: 해결 방법으로 GPO에서 VM을 제거하거나 GPO 정책을 사용하지 않도록 설정/제거합니다. 또는 필요한 암호 그룹을 허용하도록 GPO를 수정합니다. |
UserErrorOperationNotAllowedDatabaseMirroringEnabled
오류 메시지 | 가능한 원인 | 권장 작업 |
---|---|---|
데이터베이스 미러링 세션에 참여하는 데이터베이스의 백업은 AzureWorkloadBackup에서 지원되지 않습니다. | SQL 데이터베이스에서 미러링 작업을 사용하도록 설정하면 이 오류가 나타납니다. 현재 Azure Backup은 이 기능이 사용하도록 설정된 데이터베이스를 지원하지 않습니다. | 작업을 성공적으로 완료하려면 데이터베이스의 데이터베이스 미러링 세션을 제거할 수 있습니다. 또는 데이터베이스가 이미 보호되고 있는 경우 데이터베이스에 대한 백업 작업을 중지합니다. |
UserErrorWindowsWLExtFailedToStartPluginService
오류 메시지 | 가능한 원인 | 권장 |
---|---|---|
UserErrorWindowsWLExtFailedToStartPluginService 오류와 함께 작업이 실패합니다. |
Azure Backup 워크로드 확장은 서비스 계정의 잘못된 구성으로 인해 Azure Virtual Machine에서 워크로드 백업 플러그 인 서비스를 시작할 수 없습니다. | 1단계: NT Service\AzureWLBackupPluginSvc 사용자에게 다음과 같은 읽기 권한이 있는지 확인합니다. - C:\windows\Microsoft.NET \assembly\GAC_32 - C:\windows\Microsoft.NET \assembly\GAC_64 - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config. 권한이 없는 경우 이러한 디렉터리에 읽기 권한을 할당합니다. 2단계: NT Service\AzureWLBackupPluginSvc에 로컬 보안 정책>사용자 권한 할당>트래버스 검사 무시로 이동하여 트래버스 검사 무시 권한이 있는지 확인합니다. 기본적으로 Everyone을 선택해야 합니다. Everyone 및 NT Service\AzureWLBackupPluginSvc가 누락된 경우 NT Service\AzureWLBackupPluginSvc 사용자를 추가한 다음, 서비스를 다시 시작하거나 데이터 원본에 대한 백업 또는 복원 작업을 트리거합니다. |
다시 등록 오류
다시 등록 작업을 트리거하기 전에 하나 이상의 다음 증상을 확인하세요.
VM에서 백업, 복원, 백업 구성 등의 모든 작업이 실패하고 WorkloadExtensionNotReachable, UserErrorWorkloadExtensionNotInstalled, WorkloadExtensionNotPresent, WorkloadExtensionDidntDequeueMsg 오류 코드 중 하나가 표시됩니다.
백업 항목에 대한 백업 상태 영역에 연결할 수 없음이 표시되면 동일한 상태를 유발하는 다른 모든 원인을 제외합니다.
- VM에서 백업 관련 작업을 수행할 수 있는 권한이 없습니다.
- VM이 종료되어 백업을 수행할 수 없습니다.
- 네트워크 문제
Always On 가용성 그룹의 경우 백업 기본 설정을 변경한 후 또는 장애 조치(failover) 후에 백업이 실패하기 시작했습니다.
다음 이유 중 하나 이상으로 인해 이러한 현상이 발생할 수 있습니다.
- 확장이 삭제되었거나 포털에서 제거되었습니다.
- VM의 제어판 > 프로그램 제거 또는 변경에서 확장이 제거되었습니다.
- VM이 내부 디스크 복원을 통해 다시 복원되었습니다.
- 오랜 기간 동안 VM이 종료되었으므로 확장 구성이 만료되었습니다.
- VM이 삭제되고 삭제된 VM과 이름이 같고 동일한 리소스 그룹에 있는 다른 VM이 생성되었습니다.
- 가용성 그룹 노드 중 하나가 전체 백업 구성을 받지 못했습니다. 이 문제는 가용성 그룹이 자격 증명 모음에 등록되거나 새 노드가 추가될 때 발생할 수 있습니다.
위의 시나리오에서 VM에 대한 다시 등록 작업을 트리거하는 것이 좋습니다. PowerShell에서 이 작업을 수행하는 방법에 대한 지침은 여기를 참조하세요.
파일의 크기 제한
파일의 총 문자열 크기는 파일 수뿐만 아니라 파일 이름과 경로에 따라 달라집니다. 각 데이터베이스 파일의 논리적 파일 이름과 실제 경로를 가져옵니다. 다음 SQL 쿼리를 사용하면 됩니다.
SELECT mf.name AS LogicalName, Physical_Name AS Location FROM sys.master_files mf
INNER JOIN sys.databases db ON db.database_id = mf.database_id
WHERE db.name = N'<Database Name>'"
이제 다음 형식으로 정렬합니다.
[{"path":"<Location>","logicalName":"<LogicalName>","isDir":false},{"path":"<Location>","logicalName":"<LogicalName>","isDir":false}]}
예를 들면 다음과 같습니다.
[{"path":"F:\\Data\\TestDB12.mdf","logicalName":"TestDB12","isDir":false},{"path":"F:\\Log\\TestDB12_log.ldf","logicalName":"TestDB12_log","isDir":false}]}
콘텐츠의 문자열 크기가 20,000바이트를 초과하는 경우 데이터베이스 파일이 다르게 저장됩니다. 복구 중에는 복원의 대상 파일 경로를 설정할 수 없습니다. 파일은 SQL Server에서 제공하는 기본 SQL 경로에 복원됩니다.
기본 대상 복원 파일 경로 재정의
복원 작업 중에 데이터베이스 파일의 매핑이 포함된 JSON 파일을 대상 복원 경로에 배치하여 대상 복원 파일 경로를 재정의할 수 있습니다. database_name.json
파일을 만들어서 C:\Program Files\Azure Workload Backup\bin\plugins\SQL*
위치에 배치합니다.
파일의 내용은 다음 형식이어야 합니다.
[
{
"Path": "<Restore_Path>",
"LogicalName": "<LogicalName>",
"IsDir": "false"
},
{
"Path": "<Restore_Path>",
"LogicalName": "LogicalName",
"IsDir": "false"
},
]
예를 들면 다음과 같습니다.
[
{
"Path": "F:\\Data\\testdb2_1546408741449456.mdf",
"LogicalName": "testdb7",
"IsDir": "false"
},
{
"Path": "F:\\Log\\testdb2_log_1546408741449456.ldf",
"LogicalName": "testdb7_log",
"IsDir": "false"
},
]
위의 콘텐츠에서 다음 SQL 쿼리를 사용하여 데이터베이스 파일의 논리적 이름을 가져올 수 있습니다.
SELECT mf.name AS LogicalName FROM sys.master_files mf
INNER JOIN sys.databases db ON db.database_id = mf.database_id
WHERE db.name = N'<Database Name>'"
이 파일은 복원 작업을 트리거하기 전에 배치해야 합니다.
다음 단계
SQL VM용 Azure Backup에 대한 자세한 내용입니다.