Freigeben über


SqlPackage mit Daten in Parkettdateien (Vorschau)

In diesem Artikel wird die SqlPackage-Unterstützung für die Interaktion mit Daten behandelt, die im Azure Blob Storage gespeichert sind, das sich im Parkettformat befindet. Für SQL Server 2022 und Azure SQL Managed Instance ist in SqlPackage 162.1.176 und später eine Vorschauunterstützung für das Extrahieren und Veröffentlichen mit Daten in Parquet-Dateien in Azure Blob Storage verfügbar. Azure SQL-Datenbank und SQL Server 2019 und früher werden nicht unterstützt. Die Import- und Export--Aktionen stehen weiterhin für SQL Server, Azure SQL Managed Instance und Azure SQL Database zur Verfügung. Die Unterstützung für Parquet-Dateien in Azure Blob Storage ist für Azure Synapse Analytics weiterhin allgemein verfügbar.

Mit Extrahieren wird das Datenbankschema (.dacpac-Datei) in den lokalen Client geschrieben, auf dem SqlPackage ausgeführt wird, und die Daten werden im Parquet-Format in Azure Blob Storage geschrieben. Die Daten werden in einzelnen Ordnern gespeichert, die mit zweiteiligen Tabellennamen benannt werden. CETAS- wird verwendet, um die Dateien in Azure Blob Storage zu schreiben.

Mit Veröffentlichen wird das Datenbankschema (.dacpac-Datei) wird aus dem lokalen Client gelesen, auf dem SqlPackage ausgeführt wird, und die Daten werden im Parquet-Format aus Azure Blob Storage gelesen.

In SQL-Datenbanken, die in Azure gehostet werden, bieten die Extrakt-/Veröffentlichungsvorgänge mit Parkettdateien eine verbesserte Leistung gegenüber Import-/Exportvorgängen mit .bacpac Dateien in vielen Szenarien.

Extrahieren (Exportieren von Daten)

Um Daten aus einer Datenbank in Azure Blob Storage zu exportieren, wird die SqlPackage -extrahieren--Aktion mit den folgenden Eigenschaften verwendet:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageKey or /p:AzureSharedAccessSignatureToken

Der Zugriff auf die Datenbank, um auf den Blob-Speichercontainer zuzugreifen, wird über einen Speicherkontoschlüssel autorisiert. Das Datenbankschema (DACPAC-Datei) wird in den lokalen Client geschrieben, auf dem SqlPackage ausgeführt wird, und die Daten werden in Azure Blob Storage im Parkettformat geschrieben.

Der Parameter /p:AzureStorageRootPath ist optional, wodurch der Speicherstammpfad innerhalb des Containers festgelegt wird. Ohne diese Eigenschaft wird der Pfad standardmäßig auf servername/databasename/timestamp/festgelegt. Daten werden in einzelnen Ordnern gespeichert, die mit zweiteiligen Tabellennamen benannt werden. Die Anzahl der pro Tabelle erstellten Dateien hängt vom MAXDOP und den verfügbaren SQL-Kernen zum Zeitpunkt des Exports ab.

Schließlich gibt die Eigenschaft /p:TableData an, welche Tabellen ihre Daten exportiert haben. Geben Sie den Tabellennamen mit oder ohne die Klammern an, die die Namensteile im Format schema_name.table_identifier umgeben. Diese Eigenschaft kann mehrmals angegeben werden, um mehrere Tabellen anzugeben.

Beispiel

Im folgenden Beispiel wird eine Datenbank namens databasename von einem Server mit dem Namen yourserver in eine lokale Datei mit dem Namen databaseschema.dacpac im aktuellen Verzeichnis extrahiert. Die Daten werden in einen Container namens containername in einem Speicherkonto mit dem Namen storageaccount mithilfe eines Speicherkontoschlüssels namens storageaccountkeygeschrieben. Die Daten werden in den Standardpfad von servername/databasename/timestamp/ im Container geschrieben.

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

Weitere Beispiele für verfügbare Authentifizierungstypen finden Sie unter SqlPackage-Extrakt.

Veröffentlichen (Importieren von Daten)

Um Daten aus Parquet-Dateien in Azure Blob Storage in eine Datenbank zu importieren, wird die Veröffentlichungsaktion von SqlPackage mit den folgenden Eigenschaften verwendet:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureStorageKey or /p:AzureSharedAccessSignatureToken

Der Zugriff für die Veröffentlichung kann über einen Speicherkontoschlüssel oder ein SAS-Token (Shared Access Signature) autorisiert werden. Das Datenbankschema (DACPAC-Datei) wird vom lokalen Client gelesen, auf dem SqlPackage ausgeführt wird, und die Daten werden aus Azure Blob Storage im Parkettformat gelesen.

Beispiel

Im folgenden Beispiel wird eine Datenbank namens databasename auf einem Server mit dem Namen yourserver aus einer lokalen Datei namens databaseschema.dacpac im aktuellen Verzeichnis veröffentlicht. Die Daten werden aus einem Container mit dem Namen containername in einem Speicherkonto mit dem Namen storageaccount mithilfe eines Speicherkontoschlüssels namens storageaccountkeygelesen. Die Daten werden aus einzelnen Ordnern pro Tabelle unter dem Pfad yourserver/databasename/10-19-2023_11-09-56/ im Container gelesen.

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

Weitere Beispiele für die verfügbaren Arten der Authentifizierung finden Sie unter SqlPackage Publish.

Begrenzungen

PolyBase

Polybase ist für SqlPackage-Vorgänge mit Parquet-Dateien erforderlich. Die folgende Abfrage kann verwendet werden, um zu überprüfen, ob Polybase aktiviert ist:

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

Möglicherweise müssen Sie Polybase oder Polybase exportaktivieren. Zum Aktivieren von Polybase auf azure SQL Managed Instance ist PowerShell oder Azure CLIerforderlich. Es wird empfohlen, zu bewerten, ob die Aktivierung von Polybase für Ihre Umgebung geeignet ist, bevor Sie Konfigurationsänderungen vornehmen.

Tabellen- und Datentypen

Von CETAS unterstützte Datentypen werden für Extrahierungs- und Veröffentlichungsvorgänge mit Parquet-Dateien unterstützt.

Ledger-Tabellen sind für Extrahierungs- und Veröffentlichungsvorgänge mit Parquet-Dateien aktiviert.

Daten, die mit Always Encrypted gespeichert wurden, werden für Extrakt- und Veröffentlichungsvorgänge mit Parquet-Dateien nicht unterstützt.

Das Überprüfen der Datenbank auf nicht unterstützte Typen wird vor der Extraktion nach Parquet durch SqlPackage durchgeführt, aber Sie können Ihre Datenbank schnell mit T-SQL prüfen. Die folgende Beispielabfrage gibt ein Resultset von Typen und Tabellen mit Typen zurück, die für das Schreiben in Parkettdateien nicht unterstützt werden.

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

Nächste Schritte