SqlPackage Export 動作會將連線資料庫匯出至 BACPAC 檔案 (.bacpac)。 依預設,所有資料表的資料將包括在 .bacpac 檔案中。 您可以選擇性地只指定要匯出資料的資料表子集。 [匯出] 動作是 SqlPackage 資料庫可攜性功能的一部分。 若要讓匯出在交易上保持一致,您必須確定匯出期間不會發生寫入活動,或是從資料庫 的交易一致複本 匯出。
Note
雖然 Microsoft Entra ID 是 Azure Active Directory(Azure AD)的新名稱,但為了防止破壞現有的環境,Azure AD 仍會保留在某些硬式編碼元素中,例如 UI 字段、連線提供者、錯誤碼和 Cmdlet。 在本文中,這兩個名稱是可互換的。
Note
SqlPackage export 最適合在 200GB 以下的資料庫執行。 對於較大的資料庫,您可能希望使用本文中提供的屬性和 SqlPackage 疑難排解中的提示來優化操作,或透過 parquet 檔案中的資料來實現資料庫可攜性。
Command-line syntax
SqlPackage 會使用命令列上指定的參數、屬性和 SQLCMD 變數來起始指定的動作。
SqlPackage /Action:Export {parameters} {properties}
Required parameters
[匯出] 動作需要 TargetFile 參數,以指定要建立之 .bacpac 檔案的名稱和位置。 執行命令的使用者必須可寫入此位置,且包含的資料夾必須存在。
[匯出] 動作也需要透過下列組合來指定資料庫來源:
-
SourceServerName和SourceDatabaseName參數,或者 -
SourceConnectionString參數。
Examples
# example export from Azure SQL Database using SQL authentication and a connection string
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/SourceConnectionString:"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 export using short form parameter names, skips schema validation
SqlPackage /a:Export /ssn:"{yourserver}.database.windows.net,1433" /sdn:"AdventureWorksLT" /su:"sqladmin" \
/sp:"{your_password}" /tf:"C:\AdventureWorksLT.bacpac" /p:VerifyExtraction=False
# example export using Microsoft Entra managed identity
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/SourceConnectionString:"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 export connecting using Microsoft Entra username and password
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/SourceConnectionString:"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 export connecting using Microsoft Entra universal authentication
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" /UniversalAuthentication:True \
/SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
Export 動作的參數
| Parameter | Short Form | Value | Description |
|---|---|---|---|
| /AccessToken: | /at: | {string} | 指定在連線至目標資料庫時所使用的權杖型驗證存取權杖。 |
| /Action: | /a: | Export | 指定要執行的動作。 |
| /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} | 指定已篩選診斷檔案的追蹤訊息層級 |
| /MaxParallelism: | /mp: | {int} | 指定針對資料庫執行之並行作業的平行處理原則的程度。 預設值為 8。 |
| /OverwriteFiles: | /of: | {True|False} | 指定 SqlPackage 是否應該覆寫現有的檔案。 指定 False 會導致 SqlPackage 在遇到現有的檔案時中止動作。 預設值是 True。 |
| /Properties: | /p: | {PropertyName}={Value} | 為特定動作的屬性指定成對的名稱和數值:{PropertyName}={Value}。 |
| /Quiet: | /q: | {True|False} | 指定是否隱藏詳細的意見反應。 預設為 False。 |
| /SourceConnectionString: | /scs: | {string} | 指定對來源資料庫有效的 SQL Server/Azure 連接字串。 如果指定了此參數,就應該以獨佔方式將其用於所有其他來源參數。 |
| /SourceDatabaseName: | /sdn: | {string} | 定義來源資料庫的名稱。 |
| /SourceEncryptConnection: | /sec: | {Optional|Mandatory|Strict|True|False} | 指定 SQL 加密是否應該用於來源資料庫連接。 預設值是 True。 |
| /SourceHostNameInCertificate: | /shnic: | {string} | 指定使用 TLS 加密通訊層時,用來驗證來源 SQL Server TLS/SSL 憑證的值。 |
| /SourcePassword: | /sp: | {string} | 若為 SQL Server 驗證案例,則定義要用來存取來源資料庫的密碼。 |
| /SourceServerName: | /ssn: | {string} | 定義裝載來源資料庫的伺服器名稱。 |
| /SourceTimeout: | /st: | {int} | 指定建立來源資料庫連線的逾時時間(以秒為單位)。 |
| /SourceTrustServerCertificate: | /stsc: | {True|False} | 指定是否要使用 TLS 來加密來源資料庫連線並且略過驗證信任的憑證鏈結。 預設值為 False。 |
| /SourceUser: | /su: | {string} | 若為 SQL Server 驗證案例,則定義要用來存取來源資料庫的 SQL Server 使用者。 |
| /TargetFile: | /tf: | {string} | 指定作為動作目標使用的目標檔案 (即 .dacpac 檔案),而非資料庫。 如果使用此參數,其他目標參數都應該無效。 這個參數對僅支援資料庫目標的動作而言應無效。 |
| /TenantId: | /tid: | {string} | 代表 Microsoft Entra 租戶 ID 或網域名稱。 這個選項是支援來賓或匯入的 Microsoft Entra 使用者以及 Microsoft 帳戶(例如 outlook.com、hotmail.com 或 live.com)的必要條件。 假設已驗證使用者是此租用戶的原生使用者,則若省略此參數,即會使用 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 支援)。 |
Export 動作的特定屬性
| Property | Value | Description |
|---|---|---|
| /p: | CommandTimeout=(INT32 '60') | 以秒為單位指定對 SQL Server 執行查詢時的命令逾時。 |
| /p: | CompressionOption=({Normal|Maximum|Fast|SuperFast|NotCompressed} 'Normal') | 指定壓縮的類型。 |
| /p: | DatabaseLockTimeout=(INT32 '60') | 指定在對 SQLServer 執行查詢時的資料庫鎖定超時時間(以秒為單位)。 使用 -1 表示永遠等候。 |
| /p: | HashObjectNamesInLogs=(BOOLEAN 'False') | 指定是否要以隨機雜湊值取代記錄中的所有物件名稱。 |
| /p: | IgnoreIndexesStatisticsOnEnclaveEnabledColumns=(BOOLEAN 'False') | 指定是否應忽略使用隨機加密和具有保護區功能啟用之資料行加密金鑰的資料行上的索引或統計資料(不納入產生的 bacpac 檔案中)。 預設情況下(false),如果使用隨機加密和啟用保護區的資料行加密金鑰,任何索引或資料行上的統計資料都會阻止匯出動作。 |
| /p: | LongRunningCommandTimeout=(INT32 '0') | 以秒為單位指定對 SQL Server 執行查詢時的長時間執行命令逾時。 使用 0 表示永遠等候。 |
| /p: | Storage=({File|Memory}) | 指定用於擷取過程中的結構描述模型的後端儲存類型。 'Memory'是 SqlPackage 的 .NET Core 版本的預設值。 'File' 僅適用於 .NET Framework 版本的 SqlPackage,且為預設值。 |
| /p: | TableData=(STRING) | 指出要提取資料的資料表。 請使用以下格式指定資料表名稱:名稱部分可以用或不用方括號括住:schema_name.table_identifier。 此屬性可多次指定以顯示多個選項。 |
| /p: | TargetEngineVersion=({Default|Latest|V11|V12} 'Latest') | 此屬性已被取代,不建議使用。 指定 Azure SQL Database 目標引擎的預期版本。 |
| /p: | TempDirectoryForTableData=(STRING) | 指定在寫入封裝檔案前用於緩衝表格資料的替代暫存目錄。 相對於資料庫的完整大小,此位置所需的空間可能很大。 |
| /p: | VerifyExtraction=(BOOLEAN 'True') | 指定是否應驗證擷取的結構描述模型。 如果設定為 true,則會在 dacpac 或 bacpac 上執行結構描述驗證規則。 |
| /p: | VerifyFullTextDocumentTypesSupported=(BOOLEAN 'False') | 指定是否要驗證 Microsoft Azure SQL Database v12 所支援的全文檢索文件類型。 |