URL에 SQL Server 백업 모범 사례 및 문제 해결

이 항목에는 SQL Server 백업 및 Azure Blob 서비스로의 복원에 대한 모범 사례 및 문제 해결 팁이 포함되어 있습니다.

SQL Server 백업 또는 복원 작업에 Azure Blob Storage 서비스를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.

백업 관리

다음 목록에는 백업을 관리하기 위한 일반적인 권장 사항이 포함되어 있습니다.

  • Blob을 실수로 덮어쓰지 않도록 모든 백업의 고유 파일 이름을 사용하는 것이 좋습니다.

  • 컨테이너를 만들 때 필요한 인증 정보를 제공할 수 있는 사용자 또는 계정만 컨테이너의 blob을 읽거나 쓸 수 있도록 액세스 수준을 프라이빗으로 설정하는 것이 좋습니다.

  • Azure Virtual Machine에서 실행되는 SQL Server 인스턴스의 SQL Server 데이터베이스의 경우 가상 머신과 동일한 지역에 있는 스토리지 계정을 사용하여 지역 간 데이터 전송 비용을 방지합니다. 동일한 지역을 사용하면 백업 및 복원 작업에 대한 최적의 성능도 보장됩니다.

  • 실패한 백업 작업으로 인해 백업 파일이 잘못될 수 있습니다. 실패한 백업을 주기적으로 확인하고 blob 파일을 삭제하는 것이 좋습니다. 자세한 내용은 활성 임대를 사용하여 백업 Blob 파일 삭제를 참조 하세요.

  • 백업 중 WITH COMPRESSION 옵션을 사용하면 스토리지 비용과 스토리지 트랜잭션 비용이 최소화됩니다. 백업 프로세스를 완료하는 데 걸리는 시간을 줄일 수도 있습니다.

대용량 파일 처리

  • SQL Server 백업 작업은 여러 스레드를 사용하여 Azure Blob Storage 서비스로의 데이터 전송을 최적화합니다. 그러나 성능은 ISV 대역폭 및 데이터베이스 크기와 같은 다양한 요인에 따라 달라집니다. 온-프레미스 SQL Server 데이터베이스의 대형 데이터베이스나 파일 그룹을 백업하려는 경우 먼저 몇 가지 처리량 테스트를 수행하는 것이 좋습니다. Azure Storage SLA에는 고려할 수 있는 Blob에 대한 최대 처리 시간이 있습니다.

  • 특히 큰 파일을 백업할 때 백업 관리 섹션에서 권장하는 대로 WITH COMPRESSION 옵션을 사용해야 합니다.

URL에서 백업 또는 복원 문제 해결

다음은 Azure Blob Storage 서비스에 백업하거나 복원할 때 오류를 해결하는 몇 가지 빠른 방법입니다.

지원되지 않는 옵션 또는 제한 사항으로 인한 오류를 방지하려면 Azure Blob Storage 서비스로 SQL Server 백업 및 복원 문서의 제한 사항 목록과 BACKUP 및 RESTORE 명령 정보에 대한 지원을 검토합니다.

인증 오류:

  • WITH CREDENTIAL은 새로운 옵션이며 Azure Blob Storage 서비스에 백업하거나 복원하는 데 필요합니다. 자격 증명과 관련된 오류는 다음과 같습니다.

    BACKUP 또는 RESTORE 명령에 지정된 자격 증명이 없습니다. 이 문제를 방지하려면 백업 문에 자격 증명이 없는 경우 자격 증명을 만드는 T-SQL 문을 포함합니다. 다음 예제를 사용할 수 있습니다.

    IF NOT EXISTS  
    (SELECT * FROM sys.credentials   
    WHERE credential_identity = 'mycredential')  
    CREATE CREDENTIAL <credential name> WITH IDENTITY = 'mystorageaccount'  
    ,SECRET = '<storage access key> ;  
    
    
  • 자격 증명이 있지만 백업 명령을 실행하는 데 사용되는 로그인 계정에는 자격 증명에 액세스할 수 있는 권한이 없습니다. Alter any credential 권한이 있는 db_backupoperator 역할의 로그인 계정을 사용합니다.

  • 스토리지 계정 이름 및 키 값을 확인합니다. 자격 증명에 저장된 정보는 백업 및 복원 작업에서 사용하는 Azure Storage 계정의 속성 값과 일치해야 합니다.

백업 오류/실패:

  • 동일한 Blob에 대한 병렬 백업으로 인해 초기화 실패 오류로 인해 백업 중 하나가 실패합니다 .

  • 다음 오류 로그를 사용하여 백업 오류 문제를 해결합니다.

    • 추적 플래그 3051을 설정하여 다음 형식으로 특정 오류 로그에 로깅을 설정합니다.

      BackupToUrl-instname-dbname-action-PID<>><><.log 여기서 <작업은> 다음 중 하나입니다.

      • DB

      • FILELISTONLY

      • LABELONLY

      • HEADERONLY

      • VERIFYONLY

    • Windows 이벤트 로그 - 애플리케이션 로그 아래에서 이름이 'SQLBackupToUrl'인 정보를 확인할 수도 있습니다.

  • 압축된 백업에서 복원할 때 다음과 같은 오류가 표시될 수 있습니다.

    • SqlException 3284가 발생했습니다. 심각도: 16 상태: 5
      디바이스 ''https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak의 메시지 파일 표시가 정렬되지 않았습니다. 백업 세트를 만들 때 사용한 크기와 동일한 블록 크기를 사용하여 Restore 문을 다시 실행하세요. '65536'이(가) 사용할 수 있는 값인 것 같습니다.

      이 오류를 해결하려면 BACKUP을 지정하여 BLOCKSIZE = 65536 문을 다시 실행하십시오.

  • Blob에 활성 임대가 있어 백업 중 오류가 발생합니다. 실패한 백업 작업으로 인해 Blob에 활성 임대가 있을 수 있습니다.

    백업 문을 다시 사용하는 경우 다음과 유사한 오류로 백업 작업이 실패할 수 있습니다.

    URL 백업 수행 시 원격 엔드포인트에서 예외를 수신했습니다. 예외 메시지: 원격 서버에서 오류를 반환했습니다. (412) 현재 Blob에 임대가 있으며 요청에 임대 ID가 지정되지 않았습니다..

    활성 임대가 있는 백업 Blob 파일에서 복원 문을 시도하면 다음과 유사한 오류와 함께 복원 작업이 실패합니다.

    예외 메시지: 원격 서버에서 (409) 충돌을 반환했습니다.

    이러한 오류가 발생하면 Blob 파일을 삭제해야 합니다. 이 시나리오와 이 문제 해결 방법에 대한 자세한 내용은 Deleting Backup Blob Files with Active Leases를 참조하십시오.

프록시 오류

프록시 서버를 사용하여 인터넷에 액세스할 경우 다음과 같은 문제가 발생할 수 있습니다.

프록시 서버에 의한 연결 제한:

프록시 서버에는 분당 연결 수를 제한하는 설정이 있을 수 있습니다. URL에 대한 백업 프로세스는 다중 스레드 프로세스이므로 이 제한을 초과할 수 있습니다. 이러한 경우 프록시 서버는 연결을 종료합니다. 이 문제를 해결하려면 SQL Server에서 프록시를 사용하지 않도록 프록시 설정을 변경합니다. 다음은 오류 로그에 표시될 수 있는 오류 메시지 유형의 몇 가지 예입니다.

  • "http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak"에 씁니다. 실패: URL에 백업하면 원격 엔드포인트에서 예외가 수신되었습니다. 예외 메시지: 전송 연결에서 데이터를 읽을 수 없습니다. 연결이 닫혔습니다.

  • "; 파일http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:"에서 복구할 수 없는 I/O 오류가 발생했습니다. 원격 엔드포인트에서 오류를 수집할 수 없습니다.

    Msg 3013, Level 16, State 1, Line 2

    백업 데이터베이스가 비정상적으로 종료됩니다.

  • BackupIoRequest::ReportIoError: 백업 디바이스 ''http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak에 대한 쓰기 실패입니다. 운영 체제 오류 URL 백업 수행 시 원격 엔드포인트에서 예외를 수신했습니다. 예외 메시지: 전송 연결에서 데이터를 읽을 수 없습니다. 연결이 닫혔습니다.

추적 플래그 3051을 사용하여 자세한 정보 로깅을 켜면 로그에 다음 메시지가 표시 될 수도 있습니다.

HTTP 상태 코드 502, HTTP 상태 메시지 프록시 오류(분당 HTTP 요청 수가 구성된 제한을 초과했습니다. ISA 서버 관리자에게 문의하세요. )

기본 프록시 설정이 선택되지 않음:

경우에 따라 기본 설정이 선택되지 않아 아래 표시된 것과 같은 프록시 인증 오류가 발생합니다. 복구할 수 없는 I/O 오류가 파일 "http://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:"에서 발생했습니다. URL에 백업하면 원격 엔드포인트에서 예외가 수신되었습니다. 예외 메시지: 원격 서버에서 (407) 프록시 인증 필요 오류를 반환했습니다.

이 문제를 해결하려면 다음 단계를 사용하여 URL에 대한 백업 프로세스에서 기본 프록시 설정을 사용하도록 허용하는 구성 파일을 만듭니다.

  1. 다음 xml을 사용하여 BackuptoURL.exe.config라는 구성 파일을 만듭니다.

    <?xml version ="1.0"?>  
    <configuration>   
                    <system.net>   
                                    <defaultProxy enabled="true" useDefaultCredentials="true">   
                                                    <proxy usesystemdefault="true" />   
                                    </defaultProxy>   
                    </system.net>  
    </configuration>  
    
    
  2. SQL Server 인스턴스의 Binn 폴더에 구성 파일을 배치합니다. 예를 들어 컴퓨터의 C 드라이브에 SQL Server가 설치된 경우 구성 파일을 C :\Program Files\Microsoft SQL Server\MSSQL12 여기에 배치합니다.<InstanceName>\MSSQL\Binn.

Azure에 SQL Server 관리 백업 문제 해결

SQL Server Managed Backup은 URL에 백업을 기반으로 하므로 이전 섹션에서 설명한 문제 해결 팁은 SQL Server Managed Backup을 사용하는 데이터베이스 또는 인스턴스에 적용됩니다. Azure에 대한 SQL Server Managed Backup 문제 해결에 대한 자세한 내용은 Azure에 대한 SQL Server Managed Backup 문제 해결에 대해 자세히 설명합니다.

참고 항목

Azure에 저장된 백업에서 복원