SqlPackage

SqlPackage は、パブリックのデータ層アプリケーション フレームワーク (DacFx) API の一部を公開することで、次のデータベース開発タスクを自動化するコマンドライン ユーティリティです。

  • バージョン:SqlPackage アプリケーションのビルド番号が返されます。 バージョン 18.6 で追加されました。

  • Extract: 接続されている SQL データベースから、スキーマまたはスキーマとユーザー データを含め、データ層アプリケーション (.dacpac) ファイルを作成します。

  • 発行:ソース .dacpac ファイルのスキーマに合わせてデータベース スキーマの増分更新を行います。 データベースがサーバーに存在しない場合は、公開操作によって作成されます。 存在する場合は、既存のデータベースが更新されます。

  • Export:接続されている SQL データベースを、データベース スキーマとユーザー データを含め、BACPAC ファイル (.bacpac) にエクスポートします。

  • Import:BACPAC ファイルから新しいユーザー データベースにスキーマとテーブル データをインポートします。

  • DeployReport: 公開操作によって行われる変更の XML レポートを作成します。

  • DriftReport:登録されたデータベースに対して最終登録以降に行われた変更に関する XML レポートを作成します。

  • Script: ソースのスキーマに合わせてターゲットのスキーマを更新する、Transact-SQL の増分更新スクリプトを作成します。

SqlPackage コマンド ライン ツールでは、これらの操作と共に、操作固有のパラメーターおよびプロパティを指定できます。

最新バージョンをダウンロード します。 最新リリースに関する詳細については、リリース ノートをご覧ください。

コマンド ライン構文

SqlPackage を使うと、コマンド ラインで指定したパラメータープロパティ、SQLCMD 変数を使って、指定した操作を開始できます。

SqlPackage {parameters} {properties} {SQLCMD variables}

終了コード

SqlPackage コマンドは次の終了コードを返します。

  • 0 = 成功
  • 0 以外 = 失敗

使用例

その他の例については、個々のアクション ページを参照してください。

現在のデータベース スキーマの .dacpac ファイルを作成する:

SqlPackage /TargetFile:"C:\sqlpackageoutput\output_current_version.dacpac" /Action:Extract /SourceServerName:"." /SourceDatabaseName:"Contoso.Database"

パラメーター

SqlPackage アクション間で共有されるパラメーターもあります。 パラメーターについてまとめた表を次に示します。詳細については、特定のアクション ページをクリックしてください。

パラメーター 短い形式 抽出 発行 エクスポート [インポート] DeployReport DriftReport スクリプト
/AccessToken: /at x x x x x x x
/ClientId: /cid x
/DeployScriptPath: /dsp x x
/DeployReportPath: /drp x x
/Diagnostics: /d x x x x x x x
/DiagnosticsFile: /df x x x x x x x
/MaxParallelism: /mp x x x x x x x
/OutputPath: /op x x x
/OverwriteFiles: /of x x x x x x
/Profile: /pr x x x
/Properties: /p x x x x x x
/Quiet: /q x x x x x x x
/Secret: /secr x
/SourceConnectionString: /scs x x x x x
/SourceDatabaseName: /sdn x x x x x
/SourceEncryptConnection: /sec x x x x x
/SourceFile: /sf x x x x
/SourcePassword: /sp x x x x x
/SourceServerName: /ssn x x x x x
/SourceTimeout: /st x x x x x
/SourceTrustServerCertificate: /stsc x x x x x
/SourceUser: /su x x x x x
/TargetConnectionString: /tcs x x x x
/TargetDatabaseName: /tdn x x x x x
/TargetEncryptConnection: /tec x x x x x
/TargetFile: /tf x x x x
/TargetPassword: /tp x x x x x
/TargetServerName: /tsn x x x x x
/TargetTimeout: /tt x x x x x
/TargetTrustServerCertificate: /ttsc x x x x x
/TargetUser: /tu x x x x x
/TenantId: /tid x x x x x x x
/UniversalAuthentication: /ua x x x x x x x
/Variables: /v x x

プロパティ

SqlPackage アクションは、アクションの既定の動作を変更する多数のプロパティをサポートしています。 詳細については、各アクション ページをクリックしてください。

ユーティリティ コマンド

Version

sqlpackage のバージョンをビルド番号として表示します。 対話型プロンプトだけでなく、自動化されたパイプラインでも使用できます。

SqlPackage /Version

Help

/? または /help:True を使用して、SqlPackage の使用方法に関する情報を表示できます。

SqlPackage /?

特定の操作に固有のパラメーターとプロパティの情報については、その操作のパラメーターに加えてヘルプ パラメーターを使用します。

SqlPackage /Action:Publish /?

認証

SqlPackage では、SqlClient で使用できるメソッドを使って認証を行います。 認証の種類を構成するには、各 SqlPackage アクション (/SourceConnectionString/TargetConnectionString) の接続文字列パラメーターを介して、または接続プロパティの個々のパラメーターを使用して実行します。 接続文字列では、次の認証方法がサポートされています。

  • SQL Server 認証
  • Active Directory (Windows) 認証
  • Azure Active Directory 認証
    • ユーザー名/パスワード
    • 統合認証
    • ユニバーサル認証
    • 管理対象 ID
    • サービス プリンシパル

マネージド ID

自動環境では、Azure Active Directory マネージド ID が推奨される認証方法です。 このメソッドでは、実行時に SqlPackage に資格情報を渡す必要はありません。 マネージド ID は、SqlPackage アクションが実行される環境用に構成され、SqlPackage アクションではその ID を使用して Azure SQL に対する認証を行います。 ご利用の環境のマネージド ID の構成の詳細については、マネージド ID のドキュメントを参照してください。

システム割り当てマネージド ID を使用する接続文字列の例を次に示します。

Server=sampleserver.database.windows.net; Authentication=Active Directory Managed Identity; Database=sampledatabase;

環境変数

接続のプール

CONNECTION_POOLING_ENABLED 環境変数を True に設設定して、SqlPackage によって行われるすべての接続に対して接続プールを有効にすることができます。 この設定は、MSAL の調整を回避するために、Azure Active Directory のユーザー名、パスワード接続を使用した操作で推奨されます。

一時ファイル

SqlPackage 操作中、テーブル データは圧縮前または圧縮解除後に一時ファイルに書き込まれます。 大規模なデータベースの場合、これらの一時ファイルは大量のディスク領域を占有する可能性がありますが、その場所を指定できます。 エクスポート操作と抽出操作には、SqlPackage の既定値をオーバーライドする /p:TempDirectoryForTableData を指定する省略可能なプロパティが含まれます。

既定値は、SqlPackage 内の GetTempPath によって確立されます。

Windows の場合、次の環境変数は次の順序でチェックされ、存在する最初のパスが使用されます。

  1. TMP 環境変数で指定されたパス。
  2. TEMP 環境変数で指定されたパス。
  3. USERPROFILE 環境変数で指定されたパス。
  4. Windows ディレクトリ。

Linux と macOS については、TMPDIR 環境変数にパスが指定されていない場合、既定のパス /tmp/ が使用されます。

SqlPackage とデータベース ユーザー

包含データベース ユーザーは、SqlPackage 操作に含まれます。 ただし、定義のパスワード部分は SqlPackage によってランダムに生成された文字列に設定され、既存の値は転送されません。 .bacpac のインポートや .dacpac のデプロイの後で、新しいユーザーのパスワードをセキュリティで保護された値にリセットすることをお勧めします。 自動化された環境では、SqlPackage の後の手順で、パスワード値を Azure Key Vault などのセキュリティで保護されたキーストアから取得することができます。

サポート

DacFx ライブラリと SqlPackage CLI ツールでは、Microsoft モダン ライフサイクル ポリシーが採用されています。 すべてのセキュリティ更新プログラム、修正プログラムおよび新機能は、メジャー バージョンの最新のポイント バージョンでのみリリースされます。 DacFx または SqlPackage のインストールを現在のバージョンに維持すると、適切なバグ修正を適時に確実受け取ることができます。

サポートされる SQL 製品

SqlPackage と DacFx は、SqlPackage と DacFx SQL のリリース時にサポートされているすべてのサポートされる SQL バージョンをサポートしています。 たとえば、2022 年 1 月 14 日の SqlPackage リリースでは、2022 年 1 月 14 日にサポートされている SQL のすべてのバージョンをサポートしています。 SQL のサポート ポリシーの詳細については、SQL のサポート ポリシーに関するページを参照してください。

次のステップ