SqlPackage Import 參數與屬性
SqlPackage Import 動作會將 BACPAC 檔案 (.bacpac) 中的結構描述和資料表資料,匯入至 SQL Server 或 Azure SQL Database 的新或空資料庫。 在對現有資料庫進行匯入作業時,目標資料庫不能包含任何使用者定義的結構描述物件。 或者,當已驗證的使用者具有 create database 權限時,匯入動作可以建立新的資料庫。 [匯入] 動作是 SqlPackage 資料庫可攜性功能的一部分。
注意
雖然 Microsoft Entra ID 是 Azure Active Directory(Azure AD)的新名稱,但為了防止破壞現有的環境,Azure AD 仍會保留在某些硬式編碼元素中,例如 UI 字段、連線提供者、錯誤碼和 Cmdlet。 在本文中,這兩個名稱是可互換的。
注意
SqlPackage import 最適合在 200GB 以下的資料庫執行。 對於較大的資料庫,您可能希望使用本文中提供的屬性和 SqlPackage 疑難排解中的提示來優化操作,或透過 parquet 檔案中的資料來實現資料庫可攜性。
命令列語法
SqlPackage 會使用命令列上指定的參數、屬性和 SQLCMD 變數來起始指定的動作。
SqlPackage /Action:Import {parameters} {properties}
必要參數
[匯入] 動作需要 SourceFile
參數來指定包含資料庫物件和資料之 .bacpac 檔案的名稱和位置。
[匯出] 動作需要一個目標連線,SqlPackage 可在其中建立新資料庫,或其中存在空白資料庫。 透過下列組合進行指定:
TargetServerName
和TargetDatabaseName
參數,或者TargetConnectionString
參數。
範例
# 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;"
Import 動作的參數
參數 | 簡短形式 | 值 | 描述 |
---|---|---|---|
/AccessToken: | /at: | {string} | 指定在連線至目標資料庫時所使用的權杖型驗證存取權杖。 |
/Action: | /a: | 匯入 | 指定要執行的動作。 |
/AzureCloudConfig: | /acc: | {string} | 指定用於連線至 Microsoft Entra ID 的自訂端點,格式為:AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}"。 |
/Diagnostics: | /d: | {True|False} | 指定診斷記錄是否輸出到主控台。 預設為 False。 |
/DiagnosticsFile: | /df: | {string} | 指定要儲存診斷記錄的檔案。 |
/DiagnosticsLevel: | /dl | {無|關閉|重大|錯誤|警告|資訊|詳細資訊} | 指定已篩選診斷檔案的追蹤訊息層級 |
/DiagnosticsPackageFile: | /dpf | {string} | 指定要儲存診斷套件的檔案。 |
/MaxParallelism: | /mp: | {int} | 指定針對資料庫執行之並行作業的平行處理原則的程度。 預設值為 8。 |
/ModelFilePath: | /mfp: | {string} | 指定要覆寫來源檔案中 model.xml 的檔案路徑。 使用此設定可能會導致部署失敗和/或非預期的資料遺失。 此設定僅用於針對發佈、匯入或指令碼產生問題進行疑難排解時。 |
/Properties: | /p: | {PropertyName}={Value} | 指定動件專用屬性的名稱/值對:{PropertyName}={Value}。 |
/Quiet: | /q: | {True|False} | 指定是否隱藏詳細的意見反應。 預設為 False。 |
/SourceFile: | /sf: | {string} | 指定要從本機儲存體當作動作來源使用的來源檔案。 如果使用了此參數,其他來源參數都應該無效。 |
/TargetConnectionString: | /tcs: | {string} | 指定對目標資料庫有效的 SQL Server/Azure 連接字串。 如果指定此參數,就應該以獨佔方式將它用於所有其他目標參數。 |
/TargetDatabaseName: | /tdn: | {string} | 指定覆寫作為 SqlPackage 動作目標的資料庫名稱。 |
/TargetEncryptConnection: | /tec: | {Optional|Mandatory|Strict|True|False} | 指定 SQL 加密是否應該用於目標資料庫連線。 預設值是 True。 |
/TargetHostNameInCertificate: | /thnic: | {string} | 指定使用 TLS 加密通訊層時,用來驗證目標 SQL Server TLS/SSL 憑證的值。 |
/TargetPassword: | /tp: | {string} | 若為 SQL Server 驗證案例,則定義要用來存取目標資料庫的密碼。 |
/TargetServerName: | /tsn: | {string} | 定義裝載目標資料庫的伺服器名稱。 |
/TargetTimeout: | /tt: | {int} | 指定建立目標資料庫連線的逾時 (以秒為單位)。 針對 Microsoft Entra ID,此值建議大於或等於 30 秒。 |
/TargetTrustServerCertificate: | /ttsc: | {True|False} | 指定是否要使用 TLS 來加密目標資料庫連線並略過驗證信任的憑證鏈結。 預設值為 False。 |
/TargetUser: | /tu: | {string} | 若為 SQL Server 驗證案例,則定義要用以存取目標資料庫的 SQL Server 使用者。 |
/TenantId: | /tid: | {string} | 代表 Microsoft Entra 租用戶 ID 或網域名稱。 支援來賓或匯入的 Microsoft Entra 使用者以及 outlook.com、hotmail.com 或 live.com 等 Microsoft 帳戶時,這是必要選項。 假設已驗證使用者是此 AD 的原生使用者,則若省略此參數,即會使用 Microsoft Entra ID 的預設租用戶 ID。 不過,在此情況下,不支援任何來賓或匯入的使用者及/或在此 Microsoft Entra ID 中託管的 Microsoft 帳戶,且作業會失敗。 如需詳細資訊,請參閱通用驗證搭配 SQL Database 和 Azure Synapse Analytics (適用於 MFA 的 SSMS 支援)。 |
/ThreadMaxStackSize: | /tmss: | {int} | 指定執行 SqlPackage 動作之執行緒的大小上限 (以 MB 為單位)。 只有在剖析非常大的 Transact-SQL 陳述式時發生堆疊溢位例外狀況,才應該使用此選項。 |
/UniversalAuthentication: | /ua: | {True|False} | 指定是否應該使用通用驗證。 設定為 True 時,即會啟用支援 MFA 的互動式驗證通訊協定。 此選項也可以用於不使用 MFA 的 Microsoft Entra 驗證,使用需要使用者輸入其使用者名稱和密碼或整合式驗證 (Windows 認證) 的互動式通訊協定。 當 /UniversalAuthentication 設定為 True 時,SourceConnectionString (/scs) 中不能指定任何 Microsoft Entra 驗證。 當 /UniversalAuthentication 設定為 False 時, SourceConnectionString (/scs) 中必須指定 Microsoft Entra 驗證。 如需詳細資訊,請參閱通用驗證搭配 SQL Database 和 Azure Synapse Analytics (適用於 MFA 的 SSMS 支援)。 |
Import 動作的特定屬性
屬性 | 數值 | 描述 |
---|---|---|
/p: | CommandTimeout=(INT32 '60') | 以秒為單位指定對 SQL Server 執行查詢時的命令逾時。 |
/p: | DatabaseEdition=({ Basic | Standard | Premium | DataWarehouse | GeneralPurpose | BusinessCritical | Hyperscale | Default } 'Default') | 定義 Azure SQL Database 的版本。 請參閱 Azure SQL Database 服務層級。 |
/p: | DatabaseLockTimeout=(INT32 '60') | 指定對 SQLServer 執行查詢時的資料庫鎖定逾時 (秒)。 使用 -1 表示永遠等候。 |
/p: | DatabaseMaximumSize=(INT32 '0') | 定義 Azure SQL Database 的大小上限 (以 GB 表示)。 |
/p: | DatabaseServiceObjective=(STRING) | 定義 Azure SQL Database 的效能等級,例如 "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。 若為大型資料庫,則需要檔案型儲存體。 |