Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этой статье рассматривается поддержка SqlPackage для взаимодействия с данными, хранящимися в Azure Blob Storage, которые находятся в формате Parquet.
При извлечении схема базы данных (.dacpac файл) записывается в локальный клиент SqlPackage, а данные записываются в Azure Blob Storage в формате Parquet. Данные хранятся в отдельных папках с двумя именами таблиц.
CREATE EXTERNAL TABLE AS SELECT (CETAS) используется для записи файлов в хранилище BLOB-объектов Azure.
При публикации схема базы данных (.dacpac-файл) считывается из локального клиента, на котором работает SqlPackage, и данные считываются из хранилища BLOB-объектов Azure или записываются в него в формате Parquet.
Для SQL Server 2022 и Управляемого экземпляра Azure SQL в SqlPackage 162.1.176 и более поздних версиях доступна предварительная поддержка функций извлечения и публикации с данными в файлах Parquet в хранилище BLOB-объектов Azure. Для базы данных SQL Azure поддержка функции публикации в предварительной версии доступна в SqlPackage 170.1.61 и более поздних версиях. SQL Server 2019 и более ранних версий не поддерживается. Действия импорта и экспорта по-прежнему доступны для SQL Server, Управляемого экземпляра SQL Azure и базы данных SQL Azure. Поддержка файлов Parquet в хранилище BLOB-объектов Azure по-прежнему общедоступна для Azure Synapse Analytics.
В базах данных SQL, размещенных в Azure, операции извлечения и публикации с файлами Parquet обеспечивают более высокую производительность по сравнению с операциями импорта и экспорта с помощью .bacpac-файлов во многих сценариях.
Извлечение (экспорт данных)
Чтобы экспортировать данные из базы данных в хранилище Blob-объектов Azure, используется действие извлечения SqlPackage со следующими свойствами:
/p:AzureStorageBlobEndpoint/p:AzureStorageContainer-
/p:AzureSharedAccessSignatureTokenили/p:AzureStorageKey(не поддерживается для использования с SQL Server)
Доступ базы данных к контейнеру BLOB-хранилища разрешен с помощью ключа учетной записи хранения. Схема базы данных (DACPAC-файл) записывается в локальный клиент, на котором выполняется SqlPackage, и данные записываются в хранилище BLOB-объектов Azure в формате Parquet.
Параметр /p:AzureStorageRootPath необязателен, который задает корневой путь хранилища в контейнере. Без этого свойства путь по умолчанию имеет значение servername/databasename/timestamp/. Данные хранятся в отдельных папках с двумя именами таблиц. Количество файлов, созданных для каждой таблицы, зависит от MAXDOP и доступных ядер SQL во время экспорта.
Наконец, свойство /p:TableData указывает, какие таблицы экспортируют данные. Укажите имя таблицы со скобками или без них, окружающими части имени, в формате schema_name.table_identifier. Это свойство можно указать несколько раз, чтобы указать несколько таблиц.
Example
В следующем примере извлекается база данных с именем databasename с сервера с именем yourserver в локальный файл с именем databaseschema.dacpac в текущем каталоге. Данные записываются в контейнер с именем containername в учетной записи хранения с именем storageaccount с помощью ключа учетной записи хранения с именем storageaccountkey. Данные записываются в путь по умолчанию 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 для получения дополнительных примеров доступных типов проверки подлинности.
Публикация (импорт данных)
Чтобы импортировать данные из файлов Parquet в Azure Blob Storage в базу данных, используется действие SqlPackage "опубликовать" со следующими свойствами:
/p:AzureStorageBlobEndpoint/p:AzureStorageContainer/p:AzureStorageRootPath-
/p:AzureSharedAccessSignatureTokenили/p:AzureStorageKey(не поддерживается для использования с SQL Server)
Доступ к публикации можно авторизовать с помощью ключа учетной записи для хранения или маркера разделенного доступа (SAS). Схема базы данных (DACPAC-файл) считывается из локального клиента, работающего под управлением SqlPackage, и данные считываются из хранилища BLOB-объектов Azure в формате Parquet.
Example
В следующем примере база данных с именем databasename публикуется на сервере с именем yourserver из локального файла с именем databaseschema.dacpac в текущем каталоге. Данные считываются из контейнера с именем 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 .
Limitations
PolyBase
Для SQL Server и Управляемого экземпляра SQL Azure PolyBase необходим для выполнения операций SqlPackage с файлами Parquet. Следующий запрос можно использовать для проверки включения 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. Для включения PolyBase в Управляемом экземпляре SQL Azure требуется PowerShell или Azure CLI. Перед внесением изменений конфигурации следует оценить, подходит ли включение PolyBase для вашей среды.
Типы таблиц и данных
Большинство типов данных поддерживаются для операций извлечения и публикации с файлами Parquet. Таблицы с неподдерживаемыми типами данных приводят к тому, что данные этой таблицы экспортируются в файл .dacpac, а не в формате Parquet. Поддерживаются следующие типы данных и записываются в файлы Parquet в хранилище BLOB-объектов Azure:
- 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
Таблицы Ledger доступны для операций извлечения и публикации с файлами Parquet.
Данные, хранящиеся в Always Encrypted, не поддерживаются для операций извлечения и публикации с файлами Parquet.
Вы можете проверить базу данных с помощью T-SQL, чтобы определить типы данных, которые будут записаны в .dacpac файл, а не в файлах Parquet, записанных непосредственно в хранилище BLOB-объектов Azure. В следующем примере запроса возвращается результирующий набор типов и таблиц с типами, которые не поддерживаются для записи в файлы 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'
);