Parameter und Eigenschaften für die Import-Aktion von SqlPackage

Durch die Aktion „SqlPackage Import“ werden das Schema und die Tabellendaten aus einer BACPAC-Datei (.bacpac) in eine neue oder leere Datenbank in SQL Server oder Azure SQL-Datenbank importiert. Zum Zeitpunkt des Imports in eine bestehende Datenbank darf die Zieldatenbank keine benutzerdefinierten Schemaobjekte enthalten. Stattdessen kann durch die Importaktion eine neue Datenbank erstellt werden, wenn der authentifizierte Benutzer über Berechtigungen zum Erstellen von Datenbanken verfügt.

Hinweis

Während Microsoft Entra-ID der neue Name für Azure Active Directory (Azure AD) ist, bleibt Azure AD in einigen fest kodierten Elementen wie Benutzeroberfläche-Feldern, Verbindungsanbietern, Fehlercodes und Cmdlets erhalten, um Störungen in bestehenden Umgebungen zu vermeiden. In diesem Artikel sind die beiden Namen austauschbar.

Hinweis

„SqlPackage Import“ ist am besten für Datenbanken unter 200 GB geeignet. Für größere Datenbanken können Sie den Vorgang mithilfe von Eigenschaften optimieren, die Sie in diesem Artikel und in den Tipps unter Problembehandlung mit SqlPackage finden.

Befehlszeilensyntax

SqlPackage initiiert die angegebenen Aktionen mithilfe der Parameter, Eigenschaften und SQLCMD-Variablen, die in der Befehlszeile angegeben sind.

SqlPackage /Action:Import {parameters} {properties}

Beispiele

# example import to 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 Microsoft Entra 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 Microsoft Entra 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 Microsoft Entra 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;"

Parameter für die Import-Aktion

Parameter Kurzform Wert BESCHREIBUNG
/AccessToken: /at: {string} Gibt das Zugriffstoken für die tokenbasierte Authentifizierung an, das beim Herstellen einer Verbindung mit der Zieldatenbank verwendet werden soll.
/Action: /a: Importieren Gibt die auszuführende Aktion an.
/AzureCloudConfig: /acc: {string} Gibt die benutzerdefinierten Endpunkte zum Herstellen einer Verbindung mit Microsoft Entra im folgenden Format an: AzureActiveDirectoryAuthority={Wert};DatabaseServicePrincipalName={Wert}.
/Diagnostics: /d: {True|False} Gibt an, ob die Diagnoseprotokollierung in der Konsole ausgegeben wird. Der Standardwert lautet „False“.
/DiagnosticsFile: /df: {string} Gibt eine Datei an, in der Diagnoseprotokolle gespeichert werden.
/MaxParallelism: /mp: {int} Gibt den Parallelitätsgrad für gleichzeitige Vorgänge in einer Datenbank an. Der Standardwert ist 8.
/ModelFilePath: /mfp: {string} Gibt den Dateipfad zum Überschreiben von „model.xml“ in der Quelldatei an. Die Verwendung dieser Einstellung kann zu Bereitstellungsfehlern und/oder unbeabsichtigten Datenverlusten führen. Diese Einstellung ist nur für die Behandlung von Problemen mit der Veröffentlichung, dem Import oder der Skriptgenerierung vorgesehen.
/Properties: /p: {PropertyName}={Value} Gibt ein Name-Wert-Paar für eine aktionsspezifische Eigenschaft an: {PropertyName}={Value}.
/Quiet: /q: {True|False} Gibt an, ob ausführliches Feedback unterdrückt wird. Der Standardwert lautet „False“.
/SourceFile: /sf: {string} Gibt eine Quelldatei im lokalen Speicher an, die als Quelle einer Aktion verwendet werden soll. Bei Verwendung dieses Parameters sind keine anderen Quellparameter zulässig.
/TargetConnectionString: /tcs: {string} Gibt eine gültige SQL Server-/Azure-Verbindungszeichenfolge für die Zieldatenbank an. Die Angabe dieses Parameters schließt die Verwendung aller anderen Zielparameter aus.
/TargetDatabaseName: /tdn: {string} Gibt eine Außerkraftsetzung für den Namen der Datenbank an, die das Ziel der Aktion in SqlPackage darstellt.
/TargetEncryptConnection: /tec: {Optional|Obligatorisch|Strikt|True|False} Gibt an, ob für die Verbindung mit der Zieldatenbank SQL-Verschlüsselung verwendet werden soll. Der Standardwert ist TRUE.
/TargetHostNameInCertificate: /thnic: {string} Gibt den Wert an, der verwendet wird, um das TLS/SSL-Zertifikat des Ziel-SQL-Servers zu überprüfen, wenn die Kommunikationsebene mit TLS verschlüsselt wird.
/TargetPassword: /tp: {string} Definiert in SQL Server-Authentifizierungsszenarios das Kennwort für den Zugriff auf die Zieldatenbank.
/TargetServerName: /tsn: {string} Definiert den Namen des Servers, auf dem die Zieldatenbank gehostet wird.
/TargetTimeout: /tt: {int} Gibt das Timeout in Sekunden für das Herstellen einer Verbindung mit der Zieldatenbank an. Für Microsoft Entra AD wird empfohlen, dass dieser Wert größer oder gleich 30 Sekunden ist.
/TargetTrustServerCertificate: /ttsc: {True|False} Gibt an, ob zum Verschlüsseln der Verbindung mit der Zieldatenbank TLS verwendet und das Durchlaufen der Zertifikatkette zum Überprüfen der Vertrauenswürdigkeit umgangen werden soll. Der Standardwert ist "False".
/TargetUser: /tu: {string} Definiert in SQL Server-Authentifizierungsszenarios den SQL Server-Benutzer für den Zugriff auf die Zieldatenbank.
/TenantId: /tid: {string} Stellt die Microsoft Entra-Mandanten-ID oder den Domänenamen dar. Diese Option ist für die Unterstützung von Gastbenutzern oder importierten Microsoft Entra-Benutzern sowie für Microsoft-Konten wie beispielsweise outlook.com, hotmail.com oder live.com erforderlich. Bei Auslassen dieses Parameters wird die Standardmandanten-ID für Microsoft Entra ID verwendet. Hierbei wird davon ausgegangen, dass der authentifizierte Benutzer ein nativer Benutzer dieser AD-Instanz ist. In diesem Fall werden jedoch Gastbenutzer oder importierte Benutzer und/oder Microsoft-Konten, die in dieser Microsoft Entra ID gehostet werden, nicht unterstützt, und der Vorgang ist nicht erfolgreich.
Weitere Informationen finden Sie unter Universelle Authentifizierung bei SQL-Datenbank und Azure Synapse Analytics (SSMS-Unterstützung für MFA).
/ThreadMaxStackSize: /tmss: {int} Gibt die maximale Größe in Megabyte für den Thread an, der die Aktion in SqlPackage ausführt. Diese Option sollte nur verwendet werden, wenn Stapelüberlaufausnahmen festgestellt werden, die beim Analysieren sehr umfangreicher Transact-SQL-Anweisungen auftreten.
/UniversalAuthentication: /ua: {True|False} Gibt an, ob die universelle Authentifizierung verwendet werden soll. Bei Festlegung auf TRUE wird das interaktive Authentifizierungsprotokoll aktiviert, das MFA unterstützt. Diese Option kann auch für die Microsoft Entra-Authentifizierung ohne MFA verwendet werden. Hierbei wird ein interaktives Protokoll verwendet, bei dem der Benutzer seinen Benutzernamen und sein Kennwort oder eine integrierte Authentifizierung (Windows-Anmeldeinformationen) eingeben muss. Bei Festlegung von „/UniversalAuthentication“ auf TRUE kann in „SourceConnectionString“ (/scs) keine Microsoft Entra-Authentifizierung angegeben werden. Bei Festlegung von „/UniversalAuthentication“ auf FALSE muss in „SourceConnectionString“ (/scs) die Microsoft Entra-Authentifizierung angegeben werden.
Weitere Informationen finden Sie unter Universelle Authentifizierung bei SQL-Datenbank und Azure Synapse Analytics (SSMS-Unterstützung für MFA).

Spezifische Eigenschaften für die Import-Aktion

Eigenschaft Wert BESCHREIBUNG
/p: CommandTimeout=(INT32 '60') Gibt das Befehlstimeout in Sekunden zum Ausführen von Abfragen in SQL Server zurück.
/p: DatabaseEdition=({ Basic | Standard | Premium | DataWarehouse | GeneralPurpose | BusinessCritical | Hyperscale | Default } 'Default') Definiert die Edition einer Azure SQL-Datenbank. Weitere Informationen finden Sie unter Dienstebenen für Azure SQL-Datenbank.
/p: DatabaseLockTimeout=(INT32 '60') Gibt das Datenbank-Sperrtimeout für Abfragen an SQL Server in Sekunden an. Verwenden Sie „-1“, um unbegrenzt zu warten.
/p: DatabaseMaximumSize=(INT32 '0') Definiert die maximale Größe einer Azure SQL-Datenbank in GB.
/p: DatabaseServiceObjective=(STRING) Definiert die Leistungsstufe einer Azure SQL-Datenbank, z.B. „P0“ oder „S1“.
/p: DisableIndexesForDataPhase=(BOOLEAN 'True') Bei TRUE (Standardeinstellung) werden Indizes vor dem Importieren von Daten deaktiviert. Bei FALSE werden Indizes nicht neu erstellt.
/p: DisableParallelismForEnablingIndexes=(BOOLEAN 'False') Keine Parallelität beim Neuerstellen von Indizes beim Importieren von Daten in SQL Server.
/p: HashObjectNamesInLogs=(BOOLEAN 'False') Gibt an, ob alle Objektnamen in Protokollen durch einen zufälligen Hashwert ersetzt werden sollen.
/p: ImportContributorArguments=(STRING) Gibt Bereitstellungs-Contributor-Argumente für die Bereitstellungs-Contributors an. Bei dieser Eigenschaft sollte es sich um eine Liste von durch Semikolons getrennten Werten handeln.
/p: ImportContributorPaths=(STRING) Gibt Pfade zum Laden zusätzlicher Import-Contributors an. Bei dieser Eigenschaft sollte es sich um eine Liste von durch Semikolons getrennten Werten handeln.
/p: ImportContributors=(STRING) Gibt die Bereitstellungs-Contributors an, die beim Importieren der BACPAC ausgeführt werden sollen. Bei dieser Eigenschaft sollte es sich um eine durch Semikolons getrennte Liste vollqualifizierter Namen oder IDs von Buildmitwirkenden handeln.
/p: LongRunningCommandTimeout=(INT32 '0') Gibt das Timeout für zeitintensive Befehle beim Ausführen von Abfragen an SQL Server in Sekunden zurück. Verwenden Sie „0“, um unbegrenzt zu warten.
/p: PreserveIdentityLastValues=(BOOLEAN 'False') Gibt an, ob die letzten Werte für Identitätsspalten während der Bereitstellung beibehalten werden sollen.
/p: RebuildIndexesOfflineForDataPhase=(BOOLEAN 'False') Bei TRUE werden Indizes nach dem Importieren von Daten in SQL Server offline neu erstellt.
/p: Storage=({File|Memory}) Gibt an, wie Elemente gespeichert werden, wenn das Datenbankmodell erstellt wird. Die Standardeinstellung lautet aus Leistungsgründen InMemory. Für große Datenbanken ist die dateigestützte Speicherung erforderlich.

Nächste Schritte