다음을 통해 공유


Azure의 SQL Server 데이터 파일

Azure의 SQL Server Data Files를 사용하면 Azure Blob으로 저장된 SQL Server 데이터베이스 파일에 대한 기본 지원을 사용할 수 있습니다. 온-프레미스 또는 Azure의 가상 머신에서 실행되는 SQL Server에서 Azure Blob Storage의 데이터에 대한 전용 스토리지 위치를 사용하여 데이터베이스를 만들 수 있습니다. 이 향상된 기능은 특히 분리 및 연결 작업을 사용하여 컴퓨터 간에 데이터베이스를 이동하도록 간소화합니다. 또한 Azure Storage에서 또는 Azure Storage로 복원할 수 있도록 하여 데이터베이스 백업 파일에 대한 대체 스토리지 위치를 제공합니다. 따라서 데이터 가상화, 데이터 이동, 보안 및 가용성에 대한 몇 가지 이점과 고가용성 및 탄력적 크기 조정을 위한 간편한 저렴한 비용 및 유지 관리를 제공하여 여러 하이브리드 솔루션을 사용할 수 있습니다.

이 항목에서는 Azure Storage Service에 SQL Server 데이터 파일을 저장하는 데 핵심적인 개념과 고려 사항을 소개합니다.

이 새로운 기능을 사용하는 방법에 대한 실용적인 실습 환경은 자습서: Azure Storage 서비스의 SQL Server 데이터 파일을 참조하세요.

다음 다이어그램에서는 이 향상된 기능을 통해 서버가 있는 위치에 관계없이 Azure Storage에 SQL Server 데이터베이스 파일을 Azure Blob으로 저장할 수 있음을 보여 줍니다.

Azure Storage와 SQL Server의 통합

Azure에서 SQL Server 데이터 파일 사용의 이점

  • 쉽고 빠른 마이그레이션 이점: 이 기능은 애플리케이션을 변경하지 않고 온-프레미스의 컴퓨터와 온-프레미스 및 클라우드 환경 간에 한 번에 하나의 데이터베이스를 이동하여 마이그레이션 프로세스를 간소화합니다. 따라서 기존 온-프레미스 인프라를 유지 관리하는 동안 증분 마이그레이션을 지원합니다. 또한 중앙 집중식 데이터 스토리지에 액세스하면 애플리케이션이 온-프레미스 환경의 여러 위치에서 실행되어야 하는 경우 애플리케이션 논리가 간소화됩니다. 경우에 따라 여러 다른 원본에서 데이터를 수집하는 지리적으로 분산된 위치에 컴퓨터 센터를 신속하게 설정해야 할 수 있습니다. 이 새로운 향상된 기능을 사용하면 데이터를 한 위치에서 다른 위치로 이동하는 대신 많은 데이터베이스를 Azure Blob으로 저장한 다음, Transact-SQL 스크립트를 실행하여 로컬 컴퓨터 또는 가상 머신에 데이터베이스를 만들 수 있습니다.

  • 비용 및 무제한 스토리지 이점: 이 기능을 사용하면 온-프레미스 컴퓨팅 리소스를 활용하는 동시에 Azure에 무제한 오프사이트 스토리지를 사용할 수 있습니다. Azure를 스토리지 위치로 사용하는 경우 하드웨어 관리 오버헤드 없이 애플리케이션 논리에 쉽게 집중할 수 있습니다. 온-프레미스에서 계산 노드가 손실되면 데이터 이동 없이 새 노드를 설정할 수 있습니다.

  • 고가용성 및 재해 복구 이점: Azure에서 SQL Server Data Files 기능을 사용하면 고가용성 및 재해 복구 솔루션이 간소화될 수 있습니다. 예를 들어 Azure의 가상 머신 또는 SQL Server 인스턴스가 충돌하는 경우 Azure Blob에 대한 링크를 다시 설정하여 새 머신에서 데이터베이스를 다시 만들 수 있습니다.

  • 보안 이점: 이 새로운 향상된 기능을 사용하면 컴퓨팅 인스턴스를 스토리지 인스턴스와 분리할 수 있습니다. 암호 해독이 컴퓨팅 인스턴스에서만 발생하지만 스토리지 인스턴스에서는 발생하지 않는 완전히 암호화된 데이터베이스를 가질 수 있습니다. 즉, 이 새로운 향상된 기능을 사용하여 물리적으로 데이터와 분리된 TDE(투명한 데이터 암호화) 인증서를 사용하여 퍼블릭 클라우드의 모든 데이터를 암호화할 수 있습니다. TDE 키는 물리적으로 안전한 온-프레미스 머신에 로컬로 저장되고 로컬로 백업되는 마스터 데이터베이스에 저장할 수 있습니다. 이러한 로컬 키를 사용하여 Azure Storage에 있는 데이터를 암호화할 수 있습니다. 클라우드 스토리지 계정 자격 증명을 도난당한 경우 TDE 인증서가 항상 온-프레미스에 있기 때문에 데이터는 계속 안전하게 유지됩니다.

개념 및 요구 사항

Azure Storage 개념

Azure에서 SQL Server Data Files 기능을 사용하는 경우 Azure에서 스토리지 계정 및 컨테이너를 만들어야 합니다. 그런 다음 컨테이너의 정책에 대한 정보와 컨테이너에 액세스하는 데 필요한 공유 액세스 서명을 포함하는 SQL Server 자격 증명을 만들어야 합니다.

Azure에서 스토리지 계정은 Blob에 액세스하기 위한 가장 높은 수준의 네임스페이스를 나타냅니다. 총 크기가 500TB 미만인 경우 스토리지 계정에는 컨테이너 수가 무제한으로 포함될 수 있습니다. 스토리지 제한에 대한 최신 정보는 Azure 구독 및 서비스 제한, 할당량 및 제약 조건을 참조하세요. 컨테이너는 Blob 집합의 그룹화 기능을 제공합니다. 모든 Blob은 컨테이너에 있어야 합니다. 계정에는 컨테이너 수가 무제한으로 포함될 수 있습니다. 마찬가지로 컨테이너도 Blob을 무제한으로 저장할 수 있습니다. Azure Storage에 저장할 수 있는 Blob에는 블록 및 페이지 Blob의 두 가지 유형이 있습니다. 이 새로운 기능은 최대 1TB 크기일 수 있는 페이지 Blob을 사용하며 파일의 바이트 범위가 자주 수정될 때 더 효율적입니다. 다음 URL 형식 http://storageaccount.blob.core.windows.net/<container>/<blob>을 사용하여 Blob에 액세스할 수 있습니다.

Azure 청구 고려 사항

Azure 서비스 사용 비용을 예측하는 것은 의사 결정 및 계획 프로세스에서 중요한 문제입니다. Azure Storage에 SQL Server 데이터 파일을 저장할 때 스토리지 및 트랜잭션과 관련된 비용을 지불해야 합니다. 또한 Azure Storage에서 SQL Server Data Files를 구현하려면 암시적으로 45~60초마다 Blob 임대를 갱신해야 합니다. 이로 인해 데이터베이스 파일당 트랜잭션 비용(예: .mdf 또는 .ldf)이 발생합니다. 예측에 따라 두 데이터베이스 파일(.mdf 및 .ldf)에 대한 임대 갱신 비용은 현재 가격 책정 모델에 따라 매월 약 2센트가 됩니다. Azure 가격 책정 페이지의 정보를 사용하여 Azure Storage 및 Azure Virtual Machines 사용과 관련된 월별 비용을 예측하는 것이 좋습니다.

SQL Server 개념

이 새로운 향상된 기능을 사용하는 경우 다음을 수행해야 합니다.

  • 컨테이너에 정책을 만들고 SAS(공유 액세스 서명) 키도 생성해야 합니다.

  • 데이터 또는 로그 파일에서 사용하는 각 컨테이너에 대해 이름이 컨테이너 경로와 일치하는 SQL Server 자격 증명을 만들어야 합니다.

  • AZURE Storage 컨테이너, 관련 정책 이름 및 SAS 키와 관련된 정보를 SQL Server 자격 증명 저장소에 저장해야 합니다.

다음 예제에서는 Azure Storage 컨테이너가 만들어졌으며 읽기, 쓰기, 목록, 권한으로 정책이 생성되었다고 가정합니다. 컨테이너에 정책을 만들면 SQL Server가 컨테이너의 Blob 파일에 액세스하는 데 필요한 암호화되지 않은 메모리를 안전하게 유지할 수 있는 SAS 키가 생성됩니다. 다음 코드 조각에서 'your SAS key''sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'과 유사한 항목으로 바꾸십시오. 자세한 내용은 공유 액세스 서명 만들기 및 사용을 참조하세요.

-- Create a credential  
CREATE CREDENTIAL [https://testdb.blob.core.windows.net/data]  
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'your SAS key'  
  
-- Create database with data and log files in Azure container.  
CREATE DATABASE testdb   
ON  
( NAME = testdb_dat,  
    FILENAME = 'https://testdb.blob.core.windows.net/data/TestData.mdf' )  
 LOG ON  
( NAME = testdb_log,  
    FILENAME =  'https://testdb.blob.core.windows.net/data/TestLog.ldf')

중요합니다

컨테이너에 데이터 파일에 대한 활성 참조가 있는 경우 해당 SQL Server 자격 증명을 삭제하려고 하면 실패합니다.

안전

다음은 Azure Storage에 SQL Server Data Files를 저장할 때의 보안 고려 사항 및 요구 사항입니다.

  • Azure Blob Storage 서비스에 대한 컨테이너를 만들 때 프라이빗에 대한 액세스를 설정하는 것이 좋습니다. 프라이빗에 대한 액세스를 설정하는 경우 Azure 계정 소유자만 컨테이너 및 Blob 데이터를 읽을 수 있습니다.

  • Azure Storage에 SQL Server 데이터베이스 파일을 저장할 때 컨테이너, Blob, 큐 및 테이블에 대한 제한된 액세스 권한을 부여하는 URI인 공유 액세스 서명을 사용해야 합니다. 공유 액세스 서명을 사용하면 SQL Server에서 Azure Storage 계정 키를 공유하지 않고도 스토리지 계정의 리소스에 액세스할 수 있습니다.

  • 또한 데이터베이스에 대한 기존 온-프레미스 보안 사례를 계속 구현하는 것이 좋습니다.

설치 필수 구성 요소

다음은 Azuree에 SQL Server 데이터 파일을 저장할 때의 설치 필수 구성 요소입니다.

  • SQL Server 온-프레미스: SQL Server 2014 버전에는 이 기능이 포함되어 있습니다. SQL Server 2014를 다운로드하는 방법을 알아보려면 SQL Server 2014를 참조하세요.

  • Azure 가상 머신에서 실행되는 SQL Server: Azure Virtual Machine에 SQL Server를 설치하는 경우 SQL Server 2014를 설치하거나 기존 인스턴스를 업데이트합니다. 마찬가지로 SQL Server 2014 플랫폼 이미지를 사용하여 Azure에서 새 가상 머신을 만들 수도 있습니다. SQL Server 2014를 다운로드하는 방법을 알아보려면 SQL Server 2014를 참조하세요.

제한점

  • 이 기능의 현재 릴리스에서는 Azure Storage에 데이터를 저장할 FileStream 수 없습니다. Azure Storage 통합 로컬 데이터베이스에 데이터를 저장할 Filestream 수 있지만 Azure Storage를 사용하여 컴퓨터 간에 Filestream 데이터를 이동할 수는 없습니다. 데이터의 경우 FileStream 기존 기술을 계속 사용하여 파일 스트림과 연결된 파일(.mdf, .ldf)을 다른 컴퓨터 간에 이동하는 것이 좋습니다.

  • 현재 이 새로운 향상된 기능은 Azure Storage의 동일한 데이터베이스 파일에 동시에 액세스하는 둘 이상의 SQL Server 인스턴스를 지원하지 않습니다. ServerA가 활성 데이터베이스 파일을 사용하여 온라인 상태이고 ServerB가 실수로 시작되고 동일한 데이터 파일을 가리키는 데이터베이스도 있는 경우 두 번째 서버는 오류 코드 5120 "%.*ls"을(를) 사용하여 데이터베이스를 시작하지 못합니다. 운영 체제 오류 %d: "%ls".

  • .mdf, .ldf 및 .ndf 파일만 Azure의 SQL Server 데이터 파일을 사용하여 Azure Storage에 저장할 수 있습니다.

  • Azure에서 SQL Server Data Files 기능을 사용하는 경우 스토리지 계정에 대한 지역 복제가 지원되지 않습니다. 스토리지 계정이 지역 복제되고 지역 장애 조치(failover)가 발생하면 데이터베이스 손상이 발생할 수 있습니다.

  • 각 Blob의 크기는 최대 1TB입니다. 이렇게 하면 Azure Storage에 저장할 수 있는 개별 데이터베이스 데이터 및 로그 파일에 대한 상한이 만들어집니다.

  • Azure Storage의 SQL Server 데이터 파일을 사용하여 Azure Blob에 In-Memory OLTP 데이터를 저장할 수 없습니다. 이는 In-Memory OLTP에 종속성이 FileStream 있으며, 이 기능의 현재 릴리스에서는 Azure Storage에 데이터를 저장하는 FileStream 것이 지원되지 않기 때문입니다.

  • Azure에서 SQL Server 데이터 파일을 사용하는 경우, SQL Server는 데이터베이스 master의 데이터 정렬 집합을 사용하여 모든 URL 또는 파일 경로 비교를 수행합니다.

  • AlwaysOn Availability Groups 는 주 데이터베이스에 새 데이터베이스 파일을 추가하지 않는 한 지원됩니다. 데이터베이스 작업에서 주 데이터베이스에 새 파일을 만들어야 하는 경우 먼저 보조 노드에서 AlwaysOn 가용성 그룹을 사용하지 않도록 설정합니다. 그런 다음 주 데이터베이스에서 데이터베이스 작업을 수행하고 주 노드에서 데이터베이스를 백업합니다. 다음으로 데이터베이스를 보조 노드로 복원하고 보조 노드에서 AlwaysOn 가용성 그룹을 사용하도록 설정합니다. Azure의 SQL Server 데이터 파일 기능을 사용할 때, AlwaysOn 장애 조치 클러스터 인스턴스는 지원되지 않습니다.

  • 정상 작업 중에 SQL Server는 임시 임대를 사용하여 45~60초마다 각 Blob 임대를 갱신하여 스토리지용 Blob을 예약합니다. 서버가 충돌하고 동일한 Blob을 사용하도록 구성된 SQL Server의 다른 인스턴스가 시작되면 새 인스턴스는 Blob의 기존 임대가 만료될 때까지 최대 60초까지 기다립니다. 데이터베이스를 다른 인스턴스에 연결하려는 경우 임대가 60초 이내에 만료될 때까지 기다릴 수 없는 경우 Blob에서 임대를 명시적으로 중단하여 연결 작업의 오류를 방지할 수 있습니다.

도구 및 프로그래밍 참조 지원

이 섹션에서는 Azure Storage에 SQL Server 데이터 파일을 저장할 때 사용할 수 있는 도구 및 프로그래밍 참조 라이브러리에 대해 설명합니다.

PowerShell 지원

SQL Server 2014에서는 PowerShell cmdlet을 사용하여 파일 경로 대신 Blob Storage URL 경로를 참조하여 Azure Blob Storage 서비스에 SQL Server 데이터 파일을 저장할 수 있습니다. 다음 URL 형식: http://storageaccount.blob.core.windows.net/<container>/<blob> 을 사용하여 Blob에 액세스할 수 있습니다.

SQL Server 개체 및 성능 카운터 지원

SQL Server 2014부터 Azure Storage의 SQL Server 데이터 파일 기능과 함께 사용할 새 SQL Server 개체가 추가되었습니다. 새 SQL Server 개체는 HTTP_STORAGE_OBJECT SQL Server 로 호출되며, Azure Storage에서 SQL Server를 실행할 때 시스템 모니터에서 작업을 모니터링하는 데 사용할 수 있습니다.

SQL Server Management Studio 지원

SQL Server Management Studio를 사용하면 여러 대화 창을 통해 이 기능을 사용할 수 있습니다. 예를 들어 새 데이터베이스, 데이터베이스 연결데이터베이스 복원과 같은 https://teststorageaccnt.blob.core.windows.net/testcontainer/ 여러 대화 상자 창의 경로와 같은 스토리지 컨테이너의 URL 경로를 입력할 수 있습니다. 자세한 내용은 자습서: Azure Storage 서비스의 SQL Server Data Files를 참조하세요.

SQL Server 관리 개체 지원

Azure에서 SQL Server Data Files 기능을 사용하는 경우 모든 SMO(SQL Server 관리 개체)가 지원됩니다. SMO 개체에 파일 경로가 필요한 경우 같은 로컬 파일 경로 https://teststorageaccnt.blob.core.windows.net/testcontainer/대신 BLOB URL 형식을 사용합니다. SMO(SQL Server Management Objects)에 대한 자세한 내용은 SQL Server 온라인 설명서 의 SMO(SQL Server Management Objects) 프로그래밍 가이드 를 참조하세요.

Transact-SQL 지원

이 새로운 기능은 Transact-SQL 노출 영역에 다음과 같은 변경 사항을 도입했습니다.

  • sys.master_files 시스템 보기에 새로운 intcredential_id이 추가되었습니다. credential_id 열은 Azure Storage 사용 데이터 파일을 sys.credentials에 다시 상호 참조하여 만든 자격 증명을 사용하도록 설정하는 데 사용됩니다. 이를 사용하는 데이터베이스 파일이 있는 경우 자격 증명을 삭제할 수 없는 등의 문제 해결에 사용할 수 있습니다.

Azure의 SQL Server 데이터 파일 문제 해결

지원되지 않는 기능 또는 제한 사항으로 인한 오류를 방지하려면 먼저 제한 사항을 검토합니다.

Azure Storage에서 SQL Server Data Files 기능을 사용할 때 발생할 수 있는 오류 목록은 다음과 같습니다.

인증 오류

  • 활성 데이터베이스 파일에서 사용되므로 자격 증명 '%.*ls'을(를) 삭제할 수 없습니다.
    해결 방법: Azure Storage의 활성 데이터베이스 파일에서 여전히 사용 중인 자격 증명을 삭제하려고 하면 이 오류가 표시될 수 있습니다. 자격 증명을 삭제하려면 먼저 이 데이터베이스 파일이 있는 연결된 Blob을 삭제해야 합니다. 활성 임대가 있는 Blob을 삭제하려면 먼저 임대를 중단해야 합니다.

  • 공유 액세스 서명이 컨테이너에 올바르게 만들어지지 않았습니다.
    해결 방법: 컨테이너에 공유 액세스 서명을 올바르게 만들었는지 확인합니다. 자습서: Azure Storage 서비스의 SQL Server 데이터 파일의 2단원에 제공된 지침을 검토합니다.

  • SQL Server 자격 증명이 올바르게 만들어지지 않았습니다.
    해결 방법: ID 필드에 '공유 액세스 서명'을 사용하고 비밀을 올바르게 만들었는지 확인합니다. Azure Storage 서비스의 SQL Server Data Files 자습서의 3단원에 제공된 지침을 검토합니다.

Blob 임대 오류:

  • 동일한 Blob 파일을 사용하는 다른 인스턴스가 충돌한 후 SQL Server를 시작하려고 할 때 오류가 발생했습니다. 해결 방법: 정상 작업 중에 SQL Server는 임시 임대를 사용하여 45~60초마다 각 Blob 임대를 갱신하여 스토리지용 Blob을 예약합니다. 서버가 충돌하고 동일한 Blob을 사용하도록 구성된 SQL Server의 다른 인스턴스가 시작되면 새 인스턴스는 Blob의 기존 임대가 만료될 때까지 최대 60초까지 기다립니다. 데이터베이스를 다른 인스턴스에 연결하려는 경우 임대가 60초 이내에 만료될 때까지 기다릴 수 없는 경우 Blob에서 임대를 명시적으로 중단하여 연결 작업의 오류를 방지할 수 있습니다.

데이터베이스 오류

  1. 데이터베이스를 만들 때 오류 발생
    해결 방법: 자습서: Azure Storage 서비스의 SQL Server 데이터 파일, 4단원에 주어진 지침을 검토합니다.

  2. Alter 문을 실행할 때 오류 발생
    해결 방법: 데이터베이스가 온라인일 때 Alter Database 문을 실행해야 합니다. 데이터 파일을 Azure Storage에 복사할 때는 항상 페이지 Blob을 만들고, 블록 Blob은 사용하지 않습니다. 그렇지 않으면 ALTER Database가 실패합니다. Azure Storage 서비스의 SQL Server Data Files 자습서 7단원에 제공된 지침을 검토하십시오.

  3. 오류 코드 5120 물리적 파일 "%.*ls"을(를) 열 수 없습니다. 운영 체제 오류 %d: "%ls"
    해결 방법: 현재 이 새로운 향상된 기능은 Azure Storage의 동일한 데이터베이스 파일에 동시에 액세스하는 둘 이상의 SQL Server 인스턴스를 지원하지 않습니다. ServerA가 활성 데이터베이스 파일을 사용하여 온라인 상태이고 ServerB가 실수로 시작되며 동일한 데이터 파일을 가리키는 데이터베이스가 있는 경우, 두 번째 서버는 오류 코드 5120으로 인해 데이터베이스를 시작하지 못합니다. 오류 코드 5120 "%.*ls" 운영 체제 오류 %d: "%ls".

    이 문제를 해결하려면 먼저 Azure Storage의 데이터베이스 파일에 액세스하기 위해 ServerA가 필요한지 여부를 결정합니다. 그렇지 않은 경우 단순히 ServerA와 Azure Storage의 데이터베이스 파일 간의 연결을 제거합니다. 이를 수행하려면 다음 단계를 따르십시오:

    1. ALTER Database 문을 사용하여 서버 A의 파일 경로를 로컬 폴더로 설정합니다.

    2. 서버 A에서 데이터베이스를 오프라인으로 설정합니다.

    3. 그런 다음, Azure Storage에서 서버 A의 로컬 폴더로 데이터베이스 파일을 복사합니다. 이렇게 하면 ServerA에 여전히 로컬로 데이터베이스의 복사본이 있습니다.

    4. 데이터베이스를 온라인으로 설정합니다.

또한 참조하십시오

자습서: Azure Storage 서비스의 SQL Server 데이터 파일