SqlPackage

SqlPackage — это служебная программа командной строки, которая автоматизирует следующие задачи разработки баз данных, предоставляя некоторые общедоступные API Data-Tier Application Framework (DacFx):

  • Версия. Возвращает номер сборки приложения SqlPackage. Этот параметр добавлен в версии 18.6.

  • Extract: Создает файл приложения уровня данных (DACPAC), содержащий только схему или схему и пользовательские данные из подключенной базы данных SQL.

  • Publish: выполняет добавочное обновление схемы базы данных в соответствии со схемой исходного DACPAC-файла. Если база данных не существует на сервере, операция публикации создаст ее. В противном случае обновляется существующая база данных.

  • Export: экспортирует подключенную базу данных SQL, включая схему базы данных и пользовательские данные, в BACPAC-файл.

  • Import: импортирует схему и данные таблиц из BACPAC-файла в новую пользовательскую базу данных.

  • DeployReport: создает XML-отчет по изменениям, которые должны быть внесены в результате публикации.

  • DriftReport: создает XML-отчет по изменениям, которые были внесены в зарегистрированную базу данных со времени ее последней регистрации.

  • Script: создает скрипт добавочного обновления на языке Transact-SQL, который обновляет схему целевой базы данных до соответствия схеме базы данных-источника.

Программа командной строки SqlPackage позволяет указать эти действия вместе с параметрами и свойствами для конкретных действий.

Скачать последнюю версию . Подробнее см. в заметках о выпуске.

Синтаксис командной строки

SqlPackage инициирует действия, указанные с помощью параметров, свойств и переменных SQLCMD, указанных в командной строке.

SqlPackage {parameters} {properties} {SQLCMD variables}

Коды выхода

Команды SqlPackage возвращают следующие коды выхода:

  • 0 = успешное завершение;
  • ненулевое значение = сбой.

Пример использования

Дополнительные примеры доступны на страницах отдельных действий.

Создание DACPAC-файла текущей схемы базы данных:

SqlPackage /TargetFile:"C:\sqlpackageoutput\output_current_version.dacpac" /Action:Extract /SourceServerName:"." /SourceDatabaseName:"Contoso.Database"

Параметры

Некоторые параметры являются общими для действий SqlPackage. Ниже приведена таблица с описанием параметров. Дополнительные сведения см. на страницах с описанием определенных действий.

Параметр Краткая форма Извлечение Опубликовать Экспорт Импорт DeployReport DriftReport Сценарий
/AccessToken: /at x x x x x x x
/ClientId: /cid x
/DeployScriptPath: /dsp x x
/DeployReportPath: /drp x x
/Diagnostics: /d x x x x x x x
/DiagnosticsFile: /df x x x x x x x
/MaxParallelism: /mp x x x x x x x
/OutputPath: /op x x x
/OverwriteFiles: /of x x x x x x
/Profile: /pr x x x
/Properties: /p x x x x x x
/Quiet: /q x x x x x x x
/Secret: /secr x
/SourceConnectionString: /scs x x x x x
/SourceDatabaseName: /sdn x x x x x
/SourceEncryptConnection: /sec x x x x x
/SourceFile: /sf x x x x
/SourcePassword: /sp x x x x x
/SourceServerName: /ssn x x x x x
/SourceTimeout: /st x x x x x
/SourceTrustServerCertificate: /stsc x x x x x
/SourceUser: /su x x x x x
/TargetConnectionString: /tcs x x x x
/TargetDatabaseName: /tdn x x x x x
/TargetEncryptConnection: /tec x x x x x
/TargetFile: /tf x x x x
/TargetPassword: /tp x x x x x
/TargetServerName: /tsn x x x x x
/TargetTimeout: /tt x x x x x
/TargetTrustServerCertificate: /ttsc x x x x x
/TargetUser: /tu x x x x x
/TenantId: /tid x x x x x x x
/UniversalAuthentication: /ua x x x x x x x
/Variables: /v x x

Свойства

Действия SqlPackage поддерживают большое количество свойств, которые позволяют изменить поведение действия по умолчанию. Дополнительные сведения см. на страницах конкретных действий.

Вспомогательные команды

Версия

Выводит версию sqlpackage в виде номера сборки. Может использоваться в интерактивных запросах, а также в автоматизированных конвейерах.

SqlPackage /Version

Справка

Сведения об использовании SqlPackage можно отобразить с помощью /? или /help:True.

SqlPackage /?

Чтобы получить сведения о параметре или свойстве для определенного действия, используйте параметр help с параметром этого действия.

SqlPackage /Action:Publish /?

Аутентификация

SqlPackage выполняет проверку подлинности с помощью методов, доступных в SqlClient. Настройка типа проверки подлинности может выполняться с помощью параметров строки подключения для каждого действия SqlPackage (/SourceConnectionString и /TargetConnectionString) или с помощью отдельных параметров для свойств подключения. В строке подключения поддерживаются следующие методы проверки подлинности:

  • Учетные записи проверки
  • Проверка подлинности Active Directory (Windows)
  • Проверка подлинности Azure Active Directory
    • Имя пользователя и пароль
    • Встроенная проверка подлинности
    • Универсальная проверка подлинности
    • Управляемое удостоверение
    • Субъект-служба

Управляемое удостоверение

В автоматизированных средах рекомендуется использовать управляемое удостоверение Azure Active Directory . Этот метод не требует передачи учетных данных в SqlPackage во время выполнения. Управляемое удостоверение настраивается для среды, в которой выполняется действие SqlPackage, и действие SqlPackage будет использовать это удостоверение для проверки подлинности для Azure SQL. Дополнительные сведения о настройке управляемого удостоверения для среды см. в документации по управляемому удостоверению.

Пример строки подключения с использованием управляемого удостоверения, назначаемого системой:

Server=sampleserver.database.windows.net; Authentication=Active Directory Managed Identity; Database=sampledatabase;

Переменные среды

Организация пулов соединений

Пулы подключений можно включить для всех подключений, созданных SqlPackage, задав для переменной CONNECTION_POOLING_ENABLED среды значение True. Этот параметр рекомендуется использовать для операций с подключениями имени пользователя и пароля Azure Active Directory, чтобы избежать регулирования MSAL.

Временные файлы

Во время операций SqlPackage данные таблицы записываются во временные файлы до сжатия или после распаковки. Для больших баз данных эти временные файлы могут занять значительное место на диске, но их расположение можно указать. Операции экспорта и извлечения включают необязательное свойство, указывающее /p:TempDirectoryForTableData для переопределения значения sqlPackage по умолчанию.

Значение по умолчанию устанавливается GetTempPath в SqlPackage.

Для Windows следующие переменные среды проверяются в указанном порядке и используется первый существующий путь:

  1. Путь, заданный переменной среды TMP.
  2. Путь, заданный переменной среды TEMP.
  3. Путь, заданный переменной среды USERPROFILE.
  4. Каталог Windows.

Для Linux и macOS, если путь не указан в переменной среды TMPDIR, используется путь по умолчанию /tmp/.

Пользователи SqlPackage и базы данных

Пользователи автономной базы данных включаются в операции SqlPackage. Однако для части пароля определения задается случайно сформированная строка SqlPackage, существующее значение не передается. Рекомендуется сбросить пароль для нового пользователя на безопасное значение после импорта .bacpac или развертывания .dacpac. В автоматизированной среде значения паролей можно получить из безопасного хранилища ключей, например Azure Key Vault, на шаге после SqlPackage.

Поддержка

Библиотека DacFx и инструмент командной строки SqlPackage соответствуют современной политике жизненного цикла Майкрософт. Все обновления системы безопасности, исправления и новые возможности для основного номера версии выходят исключительно в версии с последним дополнительным номером. Поддержание актуальной текущей версии установок DacFx и SqlPackage позволит своевременно получать все применимые исправления ошибок.

Поддерживаемые предложения SQL

SqlPackage и DacFx поддерживают все поддерживаемые версии SQL на момент выпуска SqlPackage и DacFx. Например, выпуск SqlPackage от 14 января 2022 г. поддерживает все версии SQL, охватываемые поддержкой 14 января 2022 г. См. дополнительные сведения о политике поддержки SQL.

Дальнейшие действия