SqlPackage

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

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

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

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

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

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

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

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

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

Средство командной строки SqlPackage позволяет указать эти действия вместе с параметрами и свойствами, зависящими от действия.

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

Примечание.

Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

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

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

SqlPackage {parameters} {properties} {SQLCMD variables}

Коды выхода

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

  • 0 = успешное завершение;
  • nonzero = failure

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

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

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

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

Параметры

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

Параметр Краткая форма Extract Опубликовать Экспорт Импорт 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) или с помощью отдельных параметров для свойств подключения. В строка подключения поддерживаются следующие методы проверки подлинности:

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

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

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

В автоматизированных средах управляемое удостоверение Microsoft Entra — это рекомендуемый метод проверки подлинности. Этот метод не требует передачи учетных данных в SqlPackage во время выполнения. Если управляемое удостоверение настроено для среды, в которой выполняется действие SqlPackage, действие SqlPackage может использовать это удостоверение для проверки подлинности в SQL Azure. Дополнительные сведения о настройке управляемого удостоверения для вашей среды см. в документации по управляемому удостоверению.

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

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

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

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

Подключение пул можно включить для всех подключений, сделанных SqlPackage, задав для переменной CONNECTION_POOLING_ENABLED среды значение True. Этот параметр рекомендуется для операций с именем пользователя и паролем Microsoft Entra, чтобы избежать регулирования библиотекой проверки подлинности Майкрософт (MSAL).

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

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

Api .NET GetTempPath используется для определения значения по умолчанию в SqlPackage.

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

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

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

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

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

Сбор данных об использовании

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

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

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

Дополнительные сведения см. в заявлении о конфиденциальности Майкрософт и приложении к заявлению о конфиденциальности SQL Server.

Отключение отчетов телеметрии

Чтобы отключить сбор и отчеты телеметрии, обновите переменную DACFX_TELEMETRY_OPTOUT среды до true или 1.

Поддержка

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

Получите справку по SqlPackage, отправьте запросы функций и сообщите о проблемах в репозитории DacFx GitHub.

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

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

Следующие шаги