共用方式為


SqlPackage 匯入參數與屬性

SqlPackage 匯入動作是將 BACPAC 檔案(.bacpac)中的結構與資料表資料匯入 SQL Server 或 Azure SQL 資料庫中的新資料庫或空資料庫。 在匯入至現有資料庫時,目標資料庫不得包含任何使用者定義的結構物件。 或者,當已認證的使用者建立 資料庫權限時,也可以透過匯入動作建立新的資料庫。 匯入動作是 SqlPackage 資料庫 可攜 性功能的一部分。

Note

雖然 Microsoft Entra ID 是 Azure Active Directory(Azure AD)的新名稱,但為了防止破壞現有的環境,Azure AD 仍會保留在某些硬式編碼元素中,例如 UI 字段、連線提供者、錯誤碼和 Cmdlet。 在本文中,這兩個名稱是可互換的。

Note

SqlPackage 匯入在 200GB 以下的資料庫表現最佳。 對於較大的資料庫,你可能想利用本文提供的屬性及 SqlPackage 故障排除 技巧來優化操作,或透過 parquet 檔案中的資料來實現資料庫的可攜性。

命令列語法

SqlPackage 會使用命令行上指定的參數、屬性和 SQLCMD 變數來起始指定的動作。

SqlPackage /Action:Import {parameters} {properties}

必要參數

匯入動作需要一個 SourceFile 參數來指定包含資料庫物件與資料的 .bacpac 檔案名稱與位置。

匯入動作需要一個目標連接,其中 SqlPackage 將會建立一個新資料庫或其中已存在一個空白資料庫。 這可以透過以下組合來指定:

  • TargetServerNameTargetDatabaseName 參數,或
  • TargetConnectionString 參數。

Examples

# 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;"

匯入動作的參數

Parameter 簡短格式 Value Description
/AccessToken: /at: {string} 指定連接目標資料庫時使用的基於憑證的認證存取憑證。
/Action: /a: Import 指定要執行的動作。
/AzureCloudConfig: /acc: {string} 指定連接 Microsoft Entra ID 的自訂端點格式為:AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}“ .
/Diagnostics: /d: {True|False} 指定診斷日誌是否輸出至主控台。 預設為 False。
/DiagnosticsFile: /df: {string} 指定一個檔案來儲存診斷日誌。
/DiagnosticsLevel: /dl {None|Off|Critical|Error|Warning|Information|Verbose} 指定過濾診斷檔案的追蹤訊息層級
/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} 指定用於驗證目標 SQL Server TLS/SSL 憑證的值,當通訊層以 TLS 加密時。
/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 使用者,以及 Microsoft 帳號如 outlook.com、hotmail.com 或 live.com 所需的。 若未包含此參數,則會使用 Microsoft Entra ID 的預設租戶 ID,前提是已認證的使用者是該 AD 的原生使用者。 然而,在此情況下,任何以 Microsoft Entra ID 託管的訪客或匯入使用者及/或 Microsoft 帳號都不被支援,操作將失敗。
欲了解更多資訊,請參閱 SQL 資料庫與 Azure Synapse Analytics 的通用認證(支援 MFA 的 SSMS)。
/ThreadMaxStackSize: /tmss: {int} 指定執行 SqlPackage 動作執行緒的最大大小(以 megabytes 為單位)。 此選項僅在解析超大型 Transact-SQL 語句時遇到堆疊溢位異常時使用。
/UniversalAuthentication: /ua: {True|False} 規定是否應使用通用驗證。 當設定為 True(True)時,互動式認證協定會啟動,支援多重身份驗證(MFA)。 此選項亦可用於 Microsoft Entra 認證,無需多重認證,透過互動式協定,使用者須輸入其使用者名稱和密碼,或以整合驗證(Windows 憑證)進行驗證。 當 /UniversalAuthentication 設為 True(True)時,SourceConnectionString(/scs)中無法指定 Microsoft Entra 認證。 當 /UniversalAuthentication 被設定為 False 時,必須在 SourceConnectionString(/scs)中指定 Microsoft Entra 認證。
欲了解更多資訊,請參閱 SQL 資料庫與 Azure Synapse Analytics 的通用認證(支援 MFA 的 SSMS)。

匯入動作的特性

Property Value Description
/p: CommandTimeout=(INT32 '60') 在對 SQL Server 執行查詢時,指定指令逾時(秒數)。
/p: DatabaseEdition=({ 基本 | 標準版 | 高級版 | DataWarehouse | 一般用途 | 商業重要 | 超大規模 | 預設 } 「預設」) 定義 Azure SQL 資料庫的版本。 請參閱 Azure SQL Database 服務層級。
/p: DatabaseLockTimeout=(INT32 '60') 在執行 SQLServer 查詢時,指定資料庫鎖定逾時時間(秒數)。 用 -1 無限期等待。
/p: DatabaseMaximumSize=(INT32 '0') 定義了 Azure SQL 資料庫的最大 GB 大小。
/p: DatabaseServiceObjective=(STRING) 定義 Azure SQL 資料庫(如「P0」或「S1」)的效能等級。
/p: DisableIndexesForDataPhase=(BOOLEAN 'True') 當 true(預設值)時,會在匯入資料前停用索引。 若為錯誤,索引則不會重建。
/p: DisableParallelismForEnablingIndexes=(布林值 'False') 在匯入資料到 SQL Server 時,重建索引時沒有使用平行運算。
/p: HashObjectNamesInLogs=(Boolean 'False') 指定是否將日誌中所有物件名稱替換為隨機雜湊值。
/p: ImportContributorArguments=(STRING) 指定部署貢獻者的參數設定。 此屬性應為分號分隔的值列表。
/p: ImportContributorPaths=(STRING) 指定載入額外匯入貢獻者的路徑。 此屬性應為分號分隔的值列表。
/p: ImportContributors=(STRING) 指定部署貢獻者,該貢獻者應在 bacpac 匯入時執行。 這個屬性應該是用分號分隔的清單,列出完全限定的建置貢獻者的名稱或 ID。
/p: LongRunningCommandTimeout=(INT32 '0') 在對 SQL Server 執行查詢時,指定長時間執行的命令逾時秒數。 用 0 無限期等待。
/p: PreserveIdentityLastValues=(BOOLEAN 'False') 規定在部署期間是否應保留身份欄位的最後一個值。
/p: RebuildIndexesOfflineForDataPhase=(BOOLEAN 'False') 當為真時,會在將資料匯入 SQL Server 後離線重建索引。
/p: Storage=({File|Memory}) 規範建置資料庫模型時元素的儲存方式。 出於效能考量,預設是 InMemory。 對於大型資料庫,則需要檔案備份儲存。

後續步驟