Параметры и свойства импорта SqlPackage

Действие Импорт SqlPackage импортирует данные схемы и таблицы из BACPAC-файла (BACPAC-файла) в новую или пустую базу данных в базе данных SQL Server или Azure SQL. Во время операции импорта в существующую базу данных в целевой базе данных не могут находиться никакие определяемые пользователем объекты схемы. Кроме того, можно создать новую базу данных с помощью действия импорта, если у пользователя, прошедшего проверку подлинности, есть разрешения на создание базы данных.

Примечание

Импорт SqlPackage лучше всего подходит для баз данных объемом не более 200 ГБ. Для больших баз данных может потребоваться оптимизировать операцию с помощью свойств, доступных в этой статье, и советов по устранению неполадок с SqlPackage.

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

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

SqlPackage /Action:Import {parameters} {properties}

Примеры

# example import from Azure SQL Database using SQL authentication and a connection string
SqlPackage /Action:Import /SourceFile:"C:\AdventureWorksLT.bacpac" \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Persist Security Info=False;User ID=sqladmin;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

# example import using short form parameter names
SqlPackage /a:Import /tsn:"{yourserver}.database.windows.net,1433" /tdn:"AdventureWorksLT" /tu:"sqladmin" \
    /tp:"{your_password}" /sf:"C:\AdventureWorksLT.bacpac"

# example import using Azure Active Directory Managed Identity
SqlPackage /Action:Import /SourceFile:"C:\AdventureWorksLT.bacpac" \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Authentication=Active Directory Managed Identity;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

# example import connecting using Azure Active Directory username and password
SqlPackage /Action:Import /SourceFile:"C:\AdventureWorksLT.bacpac" \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Authentication=Active Directory Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User ID={yourusername};Password={yourpassword}"

# example import connecting using Azure Active Directory universal authentication
SqlPackage /Action:Import /SourceFile:"C:\AdventureWorksLT.bacpac" /UniversalAuthentication:True \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# example import connecting using an access token associated with a service principal
$Account = Connect-AzAccount -ServicePrincipal -Tenant $Tenant -Credential $Credential
$AccessToken_Object = (Get-AzAccessToken -Account $Account -Resource "https://database.windows.net/")
$AccessToken = $AccessToken_Object.Token

SqlPackage /at:$AccessToken /Action:Import /SourceFile:"C:\AdventureWorksLT.bacpac" \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# OR
SqlPackage /at:$($AccessToken_Object.Token) /Action:Import /SourceFile:"C:\AdventureWorksLT.bacpac" \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

Параметры действия импорта

Параметр Краткая форма Значение Описание
/AccessToken: /at {строка} Определяет маркер доступа для аутентификации на основе маркеров. Этот маркер используется при подключении к целевой базе данных.
/Action: /a Импорт Указывает действие, подлежащее выполнению.
/AzureCloudConfig: /acc {строка} Указывает пользовательские конечные точки для подключения к Azure Active Directory в формате AzureActiveDirectoryAuthority={значение};DatabaseServicePrincipalName={значение}".
/Diagnostics: /d {True|False} Указывает, следует ли выводить сведения из журнала диагностики в консоль. Значение по умолчанию — False.
/DiagnosticsFile: /df {строка} Указывает файл, в котором следует вести журнал диагностики.
/MaxParallelism: /mp {целое_число} Задает степень параллелизма для параллельных операций с базой данных. Значение по умолчанию: 8.
/ModelFilePath: /mfp {строка} Определяет путь к файлу для переопределения файла model.xml в исходном файле. Использование этого параметра может привести к сбою развертывания и (или) непредвиденной потере данных. Этот параметр предназначен только для использования при устранении неполадок с публикацией, импортом или созданием скриптов.
/Properties: /p {имя_свойства}={значение} Указывает пару "имя-значение" для свойства действия; {имя_свойства}={значение}.
/Quiet: /q {True|False} Указывает, происходит ли подавление подробного отзыва. Значение по умолчанию — False.
/SourceFile: /sf {строка} Указывает исходный файл, который должен использоваться в качестве источника действия из локального хранилища. Если используется этот параметр, все остальные параметры источника будут недействительны.
/TargetConnectionString: /tcs {строка} Указывает допустимую строку подключения SQL Server или Azure к целевой базе данных. Если этот параметр указан, ему будет отдаваться предпочтение перед всеми остальными параметрами целевого объекта.
/TargetDatabaseName: /tdn {строка} Задает переопределение для имени базы данных, которая является целевым объектом действия SqlPackage.
/TargetEncryptConnection: /tec {Необязательный| Обязательный| Строгий| True| False} Определяет, должно ли использоваться шифрование SQL для подключения к целевой базе данных. Значение по умолчанию равно True.
/TargetHostNameInCertificate: /thnic {строка} Указывает значение, используемое для проверки целевого SQL Server TLS/SSL-сертификата при шифровании уровня связи с помощью TLS.
/TargetPassword: /tp {строка} В сценариях с проверкой подлинности SQL Server — определяет пароль для доступа к целевой базе данных.
/TargetServerName: /tsn {строка} Определяет имя сервера, где размещается целевая база данных.
/TargetTimeout: /tt {целое_число} Задает время ожидания подключения к целевой базе данных (в секундах). Для AAD рекомендуется, чтобы это значение было больше или равно 30 с.
/TargetTrustServerCertificate: /ttsc {True|False} Определяет, используется ли протокол TLS для шифрования подключения к целевой базе данных без прохода по цепочке сертификатов для проверки доверия. По умолчанию используется значение False.
/TargetUser: /tu {строка} В сценариях с проверкой подлинности SQL Server — определяет пользователя SQL Server для доступа к целевой базе данных.
/TenantId: /tid {строка} Представляет ИД клиента AAD или доменное имя. Этот параметр необходим для поддержки гостевых или импортированных пользователей AAD, а также учетных записей Майкрософт, например outlook.com, hotmail.com или live.com. Если этот параметр пропущен, будет использоваться ИД клиента по умолчанию для AAD. При этом предполагается, что прошедший проверку подлинности пользователь является собственным пользователем для этого AD. Однако в этом случае все гостевые или импортированные пользователи и (или) учетные записи Майкрософт, размещенные в этой службе AAD, не поддерживаются, и операция завершится ошибкой.
Дополнительные сведения об универсальной проверке подлинности Active Directory см. в статье Универсальная проверка подлинности с Базой данных SQL и Azure Synapse Analytics (поддержка SSMS для MFA).
/ThreadMaxStackSize: /tmss {целое_число} Задает максимальный размер в мегабайтах для потока, выполняющий действие SqlPackage. Этот вариант следует использовать только при появлении исключений переполнения стека, возникающих при анализе очень больших инструкций TSQL.
/UniversalAuthentication: /ua {True|False} Указывает, следует ли использовать универсальную проверку подлинности. Если задано значение true, протокол интерактивной проверки подлинности активируется с поддержкой MFA. Этот параметр также можно применять для проверки подлинности AAD без MFA, используя интерактивный протокол, где пользователю необходимо ввести имя пользователя и пароль, или встроенную проверку подлинности (учетные данные Windows). Если для элемента /UniversalAuthentication задано значение True, в элементе SourceConnectionString (/scs) не может быть указана проверка подлинности AAD. Если для элемента /UniversalAuthentication задано значение False, в элементе SourceConnectionString (/scs) должна быть указана проверка подлинности AAD.
Дополнительные сведения об универсальной проверке подлинности Active Directory см. в статье Универсальная проверка подлинности с Базой данных SQL и Azure Synapse Analytics (поддержка SSMS для MFA).

Свойства, относящиеся к действию импорта

Свойство Значение Описание
/p: CommandTimeout=(INT32 '60') Задает время ожидания команды в секундах при выполнении запросов к SQL Server.
/p: DatabaseEdition=({ Basic | Standard | Premium | DataWarehouse | GeneralPurpose | BusinessCritical | Hyperscale | Default } 'Default') Определяет выпуск Базы данных SQL Azure. См. раздел Уровни служб в Базе данных SQL Azure.
/p: DatabaseLockTimeout=(INT32 '60') Позволяет задать превышение времени ожидания блокировки в секундах для базы данных при выполнении запросов к SQL Server. Для ожидания без ограничений используйте значение "-1".
/p: DatabaseMaximumSize=(INT32 '0') Определяет максимальный размер в ГБ для базы данных SQL Azure.
/p: DatabaseServiceObjective=(STRING) Определяет уровень производительности для базы данных SQL Azure, например "P0" или "S1".
/p: DisableIndexesForDataPhase=(BOOLEAN 'True') Если значение равно true (по умолчанию), индексы отключаются перед импортом данных. Если значение равно false, индексы не перестраиваются.
/p: DisableParallelismForEnablingIndexes=(BOOLEAN 'False') Не использовать параллелизм при перестроении индексов во время импорта данных в SQL Server.
/p: HashObjectNamesInLogs=(BOOLEAN 'False') Определяет, следует ли заменять все имена объектов в журналах случайным хэш-значением.
/p: ImportContributorArguments=(STRING) Указывает аргументы для участников развертывания. Это свойство должно быть списком значений, разделенных точкой с запятой.
/p: ImportContributorPaths=(STRING) Указывает пути для загрузки дополнительных участников импорта. Это свойство должно быть списком значений, разделенных точкой с запятой.
/p: ImportContributors=(STRING) Указывает участников развертывания, которые должны выполняться при импорте пакета BACPAC. Это свойство должно быть списком полных имен или идентификаторов участников сборки, разделенных точками с запятой.
/p: LongRunningCommandTimeout=(INT32 '0') Позволяет задать время ожидания в секундах для длительной команды при выполнении запросов к SQL Server. Для ожидания без ограничений используйте значение "0".
/p: PreserveIdentityLastValues=(BOOLEAN 'False') Указывает, следует ли сохранять последние значения для столбцов идентификаторов во время развертывания.
/p: RebuildIndexesOfflineForDataPhase=(BOOLEAN 'False') Если значение равно true, индексы перестраиваются в автономном режиме после импорта данных в SQL Server.
/p: Storage=({File|Memory}) Указывает, как сохраняются элементы при построении модели базы данных. Для обеспечения высокой производительности по умолчанию используется значение InMemory. Для больших баз данных требуется хранилище с использованием файлов.

Next Steps