Bagikan melalui


SqlPackage yang berisi data dalam berkas Parquet (pratinjau)

Artikel ini membahas dukungan SqlPackage untuk berinteraksi dengan data yang disimpan dalam Azure Blob Storage yang dalam format Parquet.

Dengan ekstrak, skema database (.dacpac file) ditulis ke klien lokal yang menjalankan SqlPackage dan data ditulis ke Azure Blob Storage dalam format Parquet. Data disimpan dalam folder individual yang diberi nama sesuai nama tabel dua bagian. CREATE EXTERNAL TABLE AS SELECT (CETAS) digunakan untuk menulis file di Azure Blob Storage.

Dengan menerbitkan, skema database (.dacpac file) dibaca dari klien lokal yang menjalankan SqlPackage dan data dibaca dari atau ditulis ke Azure Blob Storage dalam format Parquet.

Untuk SQL Server 2022 dan Azure SQL Managed Instance, dukungan pratinjau untuk mengekstrak dan menerbitkan dengan data dalam file Parquet di Azure Blob Storage tersedia di SqlPackage 162.1.176 dan yang lebih tinggi. Untuk Azure SQL Database, dukungan pratinjau untuk penerbitan tersedia di SqlPackage 170.1.61 dan yang lebih tinggi. SQL Server 2019 dan yang lebih lama tidak didukung. Tindakan impor dan ekspor terus tersedia untuk SQL Server, Azure SQL Managed Instance, dan Azure SQL Database. Dukungan untuk file Parquet di Azure Blob Storage terus tersedia secara umum untuk Azure Synapse Analytics.

Dalam database SQL yang dihosting di Azure, operasi ekstrak/terbitkan dengan file Parquet menawarkan peningkatan performa dibandingkan operasi impor/ekspor dengan file .bacpac dalam banyak skenario.

Ekstrak (ekspor data)

Untuk mengekspor data dari database ke Azure Blob Storage, tindakan ekstrak SqlPackage digunakan dengan properti berikut:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureSharedAccessSignatureToken atau /p:AzureStorageKey (tidak didukung untuk digunakan dengan SQL Server)

Cuplikan layar Ringkasan ekstrak data dari database dengan file .dacpac yang ditulis di lingkungan SqlPackage dan data tabel yang ditulis dalam file parquet di Azure Blob Storage.

Akses untuk database untuk mengakses kontainer penyimpanan blob diotorisasi melalui kunci akun penyimpanan. Skema database (file.dacpac) ditulis ke klien lokal yang menjalankan SqlPackage dan data ditulis ke Azure Blob Storage dalam format Parquet.

Parameter /p:AzureStorageRootPath bersifat opsional, yang mengatur jalur akar penyimpanan dalam kontainer. Tanpa properti ini, jalur berubah menjadi servername/databasename/timestamp/. Data disimpan dalam folder individual yang dinamai berdasarkan nama tabel yang terdiri dari dua bagian. Jumlah file yang dibuat per tabel tergantung pada MAXDOP dan inti SQL yang tersedia pada saat ekspor.

Terakhir, properti /p:TableData menentukan tabel mana yang telah diekspor datanya. Tentukan nama tabel dengan atau tanpa tanda kurung di sekitar bagian nama dalam format schema_name.table_identifier. Properti ini dapat ditentukan berulang kali untuk menunjukkan beberapa tabel.

Example

Contoh berikut mengekstrak database bernama databasename dari server bernama yourserver ke file lokal bernama databaseschema.dacpac di direktori saat ini. Data ditulis ke kontainer bernama containername di akun penyimpanan bernama storageaccount menggunakan kunci akun penyimpanan bernama storageaccountkey. Data ditulis ke jalur default servername/databasename/timestamp/ dalam kontainer.

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

Lihat Ekstrak SqlPackage untuk contoh lebih lanjut jenis autentikasi yang tersedia.

Terbitkan (impor data)

Untuk mengimpor data dari file Parquet di Azure Blob Storage ke database, tindakan penerbitan SqlPackage digunakan dengan properti berikut:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureSharedAccessSignatureToken atau /p:AzureStorageKey (tidak didukung untuk digunakan dengan SQL Server)

Akses untuk penerbitan dapat diotorisasi melalui kunci akun penyimpanan atau token tanda tangan akses bersama (SAS). Skema database (file.dacpac) dibaca dari klien lokal yang menjalankan SqlPackage dan data dibaca dari Azure Blob Storage dalam format Parquet.

Example

Contoh berikut menerbitkan database bernama databasename ke server bernama yourserver dari file lokal bernama databaseschema.dacpac di direktori saat ini. Data dibaca dari kontainer bernama containername di akun penyimpanan bernama storageaccount menggunakan kunci akun penyimpanan bernama storageaccountkey. Data dibaca dari folder individual per tabel pada jalur yourserver/databasename/10-19-2023_11-09-56/ di dalam kontainer.

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/"

Lihat Penerbitan SqlPackage untuk contoh jenis autentikasi lainnya yang tersedia.

Limitations

PolyBase

Untuk SQL Server dan Azure SQL Managed Instance, PolyBase diperlukan untuk operasi SqlPackage dengan file Parquet. Kueri berikut dapat digunakan untuk memeriksa apakah PolyBase diaktifkan:

// 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)

Anda mungkin perlu mengaktifkan PolyBase atau ekspor PolyBase. Mengaktifkan PolyBase di Azure SQL Managed Instance memerlukan PowerShell atau Azure CLI. Anda harus mengevaluasi apakah mengaktifkan PolyBase tepat untuk lingkungan Anda sebelum membuat perubahan konfigurasi.

Jenis tabel dan data

File Parquet mendukung sebagian besar jenis data untuk operasi ekstrak dan terbitkan. Tabel dengan tipe data yang tidak didukung menyebabkan data tabel tersebut diekspor ke file .dacpac alih-alih dalam format Parquet. Jenis data berikut didukung dan ditulis ke file Parquet di Azure Blob Storage:

  • char
  • varchar
  • nchar
  • nvarchar
  • text
  • ntext
  • decimal
  • numeric
  • float
  • real
  • bit
  • tinyint
  • smallint
  • int
  • bigint
  • smallmoney
  • money
  • smalldate
  • smalldatetime
  • date
  • datetime
  • datetime2
  • datetimeoffset
  • time
  • uniqueidentifier
  • timestamp
  • rowversion
  • binary
  • varbinary
  • image
  • xml
  • json
  • vector

Tabel ledger diaktifkan untuk operasi ekstrak dan penerbitan menggunakan file Parquet.

Data yang disimpan dengan Always Encrypted tidak didukung untuk operasi ekstraksi dan publikasi dengan file Parquet.

Anda dapat memeriksa database Anda dengan T-SQL untuk mendeteksi jenis data yang akan ditulis ke dalam .dacpac file alih-alih dalam file Parquet yang ditulis langsung ke Azure Blob Storage. Contoh kueri berikut mengembalikan kumpulan hasil jenis dan tabel dengan tipe yang tidak didukung untuk menulis ke file 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',
    'tinyint',
    'smallint',
    'int',
    'bigint',
    'bit',
    'money',
    'smallmoney',
    'uniqueidentifier',
    'timestamp',
    'rowversion',
    'text',
    'ntext',
    'image',
    'xml',
    'json',
    'vector'
);