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 storageaccountkey
geschrieben. 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 storageaccountkey
gelesen. 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
- Weitere Informationen zum Extrahieren
- Weitere Informationen zum Veröffentlichen
- Weitere Informationen zu Azure Blob Storage-
- Weitere Informationen zu Shared Access Signature (SAS) von Azure Storage
- Weitere Informationen zu Azure Storage Account Keys