다음을 통해 공유


Parquet 파일의 데이터가 포함된 SqlPackage(미리 보기)

이 문서에서는 Parquet 형식의 Azure Blob Storage에 저장된 데이터와 상호 작용하기 위한 SqlPackage 지원에 대해 설명합니다. SQL Server 2022 및 Azure SQL Managed Instance의 경우, Azure Blob Storage의 Parquet 파일에서 데이터를 추출게시 미리 보기 지원이 SqlPackage 162.1.176 이상에서 제공됩니다. Azure SQL Database 및 SQL Server 2019 이하는 지원되지 않습니다. 가져오기내보내기 작업은 SQL Server, Azure SQL Managed Instance 및 Azure SQL Database에 계속 사용할 수 있습니다. Azure Blob Storage의 Parquet 파일에 대한 지원은 Azure Synapse Analytics계속하여 일반적으로 이용 가능합니다.

추출사용하면 데이터베이스 스키마(.dacpac 파일)가 SqlPackage를 실행하는 로컬 클라이언트에 기록되고 데이터는 Parquet 형식으로 Azure Blob Storage에 기록됩니다. 데이터는 두 부분으로 구성된 테이블 이름으로 명명된 개별 폴더에 저장됩니다. CETAS Azure Blob Storage에서 파일을 작성하는 데 사용됩니다.

게시사용하면 SqlPackage를 실행하는 로컬 클라이언트에서 데이터베이스 스키마(.dacpac 파일)를 읽고 데이터를 Parquet 형식으로 Azure Blob Storage에서 읽거나 Azure Blob Storage에 기록합니다.

Azure에서 호스트되는 SQL 데이터베이스에서 Parquet 파일을 사용한 추출/게시 작업은 많은 시나리오에서 .bacpac 파일을 사용하여 가져오기/내보내기 작업에 비해 향상된 성능을 제공합니다.

추출(데이터 내보내기)

데이터베이스에서 Azure Blob Storage로 데이터를 내보내기 위해 SqlPackage 추출 작업은 다음 속성과 함께 사용됩니다.

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageKey 또는 /p:AzureSharedAccessSignatureToken

Blob Storage 컨테이너에 액세스하는 데이터베이스에 대한 액세스 권한은 스토리지 계정 키를 통해 부여됩니다. 데이터베이스 스키마(.dacpac 파일)는 SqlPackage를 실행하는 로컬 클라이언트에 기록되고 데이터는 Parquet 형식으로 Azure Blob Storage에 기록됩니다.

매개 변수 /p:AzureStorageRootPath 컨테이너 내의 스토리지 루트 경로를 설정하는 선택 사항입니다. 이 속성이 없으면 경로는 기본적으로 servername/databasename/timestamp/. 데이터는 두 부분으로 구성된 테이블 이름으로 명명된 개별 폴더에 저장됩니다. 테이블당 생성된 파일 수는 내보내기 시 MAXDOP 및 사용 가능한 SQL 코어에 따라 달라집니다.

마지막으로 속성 /p:TableData 데이터를 내보낸 테이블을 지정합니다. 이름 부분을 둘러싼 대괄호를 schema_name.table_identifier 형식으로 지정하거나 사용하지 않고 테이블 이름을 지정합니다. 이 속성은 여러 테이블을 나타내기 위해 여러 번 지정할 수 있습니다.

예시

다음 예제에서는 yourserver 서버에서 현재 디렉터리의 databaseschema.dacpac 로컬 파일로 databasename 데이터베이스를 추출합니다. 데이터는 storageaccountkey스토리지 계정 키를 사용하여 storageaccount 스토리지 계정의 containername 컨테이너에 기록됩니다. 데이터는 컨테이너에서 servername/databasename/timestamp/ 기본 경로에 기록됩니다.

SqlPackage /Action:Extract /SourceServerName:yourserver /SourceDatabaseName:databasename /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey

사용 가능한 인증 유형의 더 많은 예제는 SqlPackage 추출 참조하세요.

게시(데이터 가져오기)

Azure Blob Storage의 Parquet 파일에서 데이터베이스로 데이터를 가져오기 위해 SqlPackage 게시 작업은 다음 속성과 함께 사용됩니다.

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureStorageKey 또는 /p:AzureSharedAccessSignatureToken

게시에 대한 액세스 권한은 스토리지 계정 키 또는 SAS(공유 액세스 서명) 토큰을 통해 부여할 수 있습니다. 데이터베이스 스키마(.dacpac 파일)는 SqlPackage를 실행하는 로컬 클라이언트에서 읽혀지고 데이터는 Parquet 형식으로 Azure Blob Storage에서 읽습니다.

예시

다음 예제에서는 databasename 데이터베이스를 현재 디렉터리의 databaseschema.dacpac 로컬 파일에서 yourserver 서버에 게시합니다. 데이터는 이름이 containername인 컨테이너에서 storageaccount 스토리지 계정의 storageaccountkey스토리지 계정 키를 사용하여 읽습니다. 데이터는 컨테이너의 경로 yourserver/databasename/10-19-2023_11-09-56/에 있는 테이블별 개별 폴더에서 읽어옵니다.

SqlPackage /Action:Publish /SourceFile:databaseschema.dacpac /TargetServerName:yourserver /TargetDatabaseName:databasename /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername  /p:AzureStorageKey=storageaccountkey /p:AzureStorageRootPath="yourserver/databasename/10-19-2023_11-09-56/"

사용 가능한 인증 유형의 더 많은 예제는 SqlPackage 게시 참조하세요.

제한

Polybase

Parquet 파일을 사용하는 SqlPackage 작업에는 Polybase 필요합니다. 다음 쿼리를 사용하여 Polybase를 사용할 수 있는지 확인할 수 있습니다.

// configuration_id = 16397 is 'allow polybase export'
// configuration_id = 16399 is 'polybase enabled'
SELECT configuration_id, value_in_use FROM sys.configurations
WHERE configuration_id IN (16397, 16399)

Polybase 또는 Polybase 내보내기을(를) 사용하도록 설정해야 할 수 있습니다. Azure SQL Managed Instance에서 Polybase를 사용하도록 설정하려면 PowerShell 또는 Azure CLI필요합니다. 구성을 변경하기 전에 Polybase를 사용하도록 설정하는 것이 사용자 환경에 적합한지 평가하는 것이 좋습니다.

테이블 및 데이터 형식

CETAS 지원하는 데이터 형식은 Parquet 파일을 사용하여 추출 및 게시 작업에 대해 지원됩니다.

원장 테이블은 Parquet 파일을 사용하여 추출 및 게시 작업에 사용할 수 있습니다.

Always Encrypted를 사용하여 저장된 데이터는 Parquet 파일을 사용하여 추출 및 게시 작업에 대해 지원되지 않습니다.

지원되지 않는 형식에 대한 데이터베이스 확인은 Parquet by SqlPackage로 추출하기 전에 수행되지만 T-SQL을 사용하여 데이터베이스를 신속하게 검사할 수 있습니다. 다음 샘플 쿼리는 Parquet 파일에 쓰는 데 지원되지 않는 형식이 있는 형식 및 테이블의 결과 집합을 반환합니다.

SELECT DISTINCT C.DATA_TYPE, C.TABLE_SCHEMA, C.TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
    ON T.TABLE_SCHEMA = C.TABLE_SCHEMA 
    AND T.TABLE_NAME = C.TABLE_NAME
    AND T.TABLE_TYPE = 'BASE TABLE'
WHERE C.DATA_TYPE NOT IN (
    'binary',
    'varbinary',
    'char',
    'varchar',
    'nchar',
    'nvarchar',
    'smalldate',
    'smalldatetime',
    'date',
    'datetime',
    'datetime2',
    'datetimeoffset',
    'time',
    'decimal',
    'numeric',
    'float',
    'real',
    'bigint',
    'tinyint',
    'smallint',
    'int',
    'bigint',
    'bit',
    'money',
    'smallmoney',
    'uniqueidentifier'
)

다음 단계

  • 추출 대해 자세히 알아보기
  • 게시 대해 자세히 알아보기
  • Azure Blob Storage 대해 자세히 알아보기
  • Azure Storage 공유 액세스 서명(SAS) 에 대해 자세히 알아보십시오.
  • Azure Storage 계정 키 대해 자세히 알아보기