SqlPackage 是適用於 Windows、Linux 和 macOS 環境中的資料庫可移植性和部署的命令行公用程式。 SqlPackage 命令行介面 (CLI) 會剖析參數、屬性和 SQLCMD 變數的每個調用。
SqlPackage {parameters} {properties} {SQLCMD variables}
- 參數 指定要執行的動作、來源與目標資料庫,以及其他一般設定。
- 屬性 會修改動作的預設行為。
- SQLCMD 變數會 將值傳遞給原始檔案中的 SQLCMD 變數。
要建立 SqlPackage 指令,請指定一個動作及其附加參數。 可選擇性地新增屬性與 SQLCMD 變數,進一步自訂指令。
以下範例使用 SqlPackage 建立 .dacpac 目前資料庫結構的檔案:
SqlPackage /Action:Extract /TargetFile:"C:\sqlpackageoutput\output_current_version.dacpac" \
/SourceServerName:"localhost" /SourceDatabaseName:"Contoso" \
/p:IgnoreUserLoginMappings=True /p:Storage=Memory
以下是這個範例的參數:
/Action:Extract/TargetFile:"C:\sqlpackageoutput\output_current_version.dacpac"/SourceServerName:"localhost"/SourceDatabaseName:"Contoso"
以下是這個例子的性質:
/p:IgnoreUserLoginMappings=True/p:Storage=Memory
SqlPackage 動作
| 行動 | Description |
|---|---|
| 版本 | 回傳 SqlPackage 應用程式的建置號。 |
| 擷取 | 建立一個資料層應用程式(.dacpac)檔案,包含結構或結構,以及來自連接的 SQL 資料庫中的使用者資料。 |
| 發佈 | 逐步更新資料庫結構,使其與原始檔案 .dacpac 的結構相符。 如果伺服器上沒有資料庫,發行作業就會建立它。 否則,會更新現有的資料庫。 |
| 匯出 | 將連接的 SQL 資料庫(包括資料庫結構與使用者資料)匯出為 BACPAC 檔案(.bacpac)。 |
| 匯入 | 將 BACPAC 檔案中的結構與資料匯入新的使用者資料庫。 |
| DeployReport | 建立一份 XML 報告,表示發佈動作所帶來的變更。 |
| DriftReport | 建立一份 XML 報告,表示自上次註冊以來對已註冊資料庫所施加的變更。 |
| 文稿 | 建立 Transact-SQL 累加式更新腳本,以更新目標的架構以符合來源的架構。 |
注意
雖然 Microsoft Entra ID 是 Azure Active Directory (Azure AD)的新名稱,為了避免中斷現有的環境,Azure AD 仍會保留在某些硬式編碼元素中,例如 UI 字段、連線提供者、錯誤碼和 Cmdlet。 在本文中,這兩個名稱是可互換的。
參數
某些參數會在 SqlPackage 動作之間共用。 下表總結了這些參數。 欲了解更多資訊,請使用表格標題中的連結前往具體行動頁面。
| 參數 | 簡短表單 | 擷取 | 發佈 | 匯出 | 匯入 | DeployReport | DriftReport | 文稿 |
|---|---|---|---|---|---|---|---|---|
/AccessToken: |
/at |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/ClientId: |
/cid |
否 | Yes | 否 | 否 | 否 | 否 | 否 |
/DeployScriptPath: |
/dsp |
否 | Yes | 否 | 否 | 否 | 否 | Yes |
/DeployReportPath: |
/drp |
否 | Yes | 否 | 否 | 否 | 否 | Yes |
/Diagnostics: |
/d |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/DiagnosticsFile: |
/df |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/DiagnosticsPackageFile: |
/dpf |
否 | Yes | 否 | Yes | 否 | 否 | 否 |
/MaxParallelism: |
/mp |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/OutputPath: |
/op |
否 | 否 | 否 | 否 | Yes | Yes | Yes |
/OverwriteFiles: |
/of |
Yes | Yes | Yes | 否 | Yes | Yes | Yes |
/Profile: |
/pr |
否 | Yes | 否 | 否 | Yes | 否 | Yes |
/Properties: |
/p |
Yes | Yes | Yes | Yes | Yes | 否 | Yes |
/Quiet: |
/q |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/Secret: |
/secr |
否 | Yes | 否 | 否 | 否 | 否 | 否 |
/SourceConnectionString: |
/scs |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceDatabaseName: |
/sdn |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceEncryptConnection: |
/sec |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceFile: |
/sf |
否 | Yes | 否 | Yes | Yes | 否 | Yes |
/SourcePassword: |
/sp |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceServerName: |
/ssn |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceTimeout: |
/st |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceTrustServerCertificate: |
/stsc |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/SourceUser: |
/su |
Yes | Yes | Yes | 否 | Yes | 否 | Yes |
/TargetConnectionString: |
/tcs |
否 | 否 | 否 | Yes | Yes | Yes | Yes |
/TargetDatabaseName: |
/tdn |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TargetEncryptConnection: |
/tec |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TargetFile: |
/tf |
Yes | 否 | Yes | 否 | Yes | 否 | Yes |
/TargetPassword: |
/tp |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TargetServerName: |
/tsn |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TargetTimeout: |
/tt |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TargetTrustServerCertificate: |
/ttsc |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TargetUser: |
/tu |
否 | Yes | 否 | Yes | Yes | Yes | Yes |
/TenantId: |
/tid |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/UniversalAuthentication: |
/ua |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
/Variables: |
/v |
否 | 否 | 否 | 否 | Yes | 否 | Yes |
屬性
SqlPackage 動作支援許多屬性來修改動作的預設行為。 在命令列新增 /p:PropertyName=Value 功能,可以選擇使用屬性。 你可以指定多個屬性,並且某些屬性可以指定不只一次。 例如,您可以使用 /p:TableData=Product /p:TableData=ProductCategory。 欲了解更多物業資訊,請參閱具體行動頁面。
SQLCMD 變數
你可以從 SQL 專案中將 SQLCMD 變數建入 .dacpac 檔案。 在部署時使用 SqlPackage Publish 或 Script 設定這些變數。 欲了解更多關於將 SQLCMD 變數加入 SQL 專案的資訊,請參閱 SQL 資料庫專案擴充功能。
公用程式命令
版本
將 sqlpackage 版本顯示為組建編號。 在互動提示和 自動化流程中使用它。
SqlPackage /Version
幫助
使用 /? 或 /help:True 顯示 SqlPackage 使用資訊。
SqlPackage /?
針對特定動作特有的參數和屬性資訊,除了該動作的參數之外,請使用 help 參數。
SqlPackage /Action:Publish /?
結束代碼
SqlPackage 命令會傳回下列結束代碼:
- 0 = 成功
- 非零=失效