SqlPackage Import のパラメーターとプロパティ

SqlPackage の Import 操作を実行すると、BACPAC ファイル (.bacpac) のスキーマとテーブル データが、SQL Server または Azure SQL Database の新規または空のデータベースにインポートされます。 既存のデータベースへのインポート操作時に、ターゲット データベースにユーザー定義のスキーマ オブジェクトを含めることはできません。 あるいは、認証されたユーザーにデータベースを作成する許可が与えられているとき、新しいデータベースをインポート アクションで作成できます。 Import 操作は、SqlPackage のデータベースの移植性機能の一部です。

Note

Microsoft Entra ID はAzure Active Directory (Azure AD) の新しい名前ですが、既存の環境の中断を防ぐために、UI フィールド、接続プロバイダー、エラー コード、コマンドレットなど、ハードコーディングされた一部の要素でAzure AD が残ります。 この記事では、2 つの名前は交換可能です。

Note

SqlPackage のインポートのパフォーマンスは、200 GB 未満のデータベースの場合、最高です。 より大規模なデータベースでは、この記事と「SqlPackage のトラブルシューティング」のヒントに記載されているプロパティを使用して操作を最適化するか、代わりに Parquet ファイル内のデータを使用してデータベースの移植性を実現してください。

コマンドライン構文

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

SqlPackage /Action:Import {parameters} {properties}

必須のパラメーター

Import 操作には、データベース オブジェクトとデータを含む .bacpac ファイルの名前と場所を指定する SourceFile パラメーターが必要です。

Export 操作には、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} 診断ログを保存するファイルを指定します。
/MaxParallelism: /mp: {int} 1 つのデータベースに対して実行される同時実行操作の並列処理の次数を指定します。 既定値は 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 ユーザーと Microsoft アカウント (outlook.com、hotmail.com、live.com など) をサポートするために必要です。 このパラメーターを省略すると、認証されたユーザーがこの AD のネイティブ ユーザーであると想定して、Microsoft Entra ID の既定のテナント ID が使用されます。 ただし、この場合、ゲスト、またはこの Microsoft Entra ID でホストされているインポートされたユーザーと Microsoft アカウントはサポートされず、操作は失敗します。
詳細については、SQL Database と Azure Synapse Analytics を使用したユニバーサル認証 (SSMS での MFA のサポート) に関するページをご覧ください。
/ThreadMaxStackSize: /tmss: {int} SqlPackage 操作を実行するスレッドの最大サイズを MB 単位で指定します。 このオプションは、非常に大きな Transact-SQL ステートメントを解析するときに発生するスタック オーバーフロー例外が発生した場合にのみ使用してください。
/UniversalAuthentication: /ua: {True|False} ユニバーサル認証を使用するかどうかを指定します。 True に設定すると、対話型認証プロトコルがアクティブになり、MFA がサポートされます。 このオプションは、ユーザーによるユーザー名とパスワードの入力を必要とする対話型プロトコルまたは統合認証 (Windows 認証情報) を使用した、MFA なしの Microsoft Entra 認証に使用することもできます。 /UniversalAuthentication が True に設定されているときは、SourceConnectionString (/scs) で Microsoft Entra 認証を指定することはできません。 /UniversalAuthentication が False に設定されているときは、SourceConnectionString (/scs) で Microsoft Entra 認証を指定する必要があります。
詳細については、SQL Database と Azure Synapse Analytics を使用したユニバーサル認証 (SSMS での MFA のサポート) に関するページをご覧ください。

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 をインポートするときに実行する配置コントリビューターを指定します。 このプロパティは、完全修飾のビルド共同作成者名か ID の、セミコロンで区切られたリストである必要があります。
/p: LongRunningCommandTimeout=(INT32 '0') SQL Server に対してクエリを実行するときの実行時間の長いコマンドのタイムアウトを秒単位で指定します。 無期限に待機するには、0 を使用します。
/p: PreserveIdentityLastValues=(BOOLEAN 'False') 配置中に ID 列の最後の値を保存するかどうかを指定します。
/p: RebuildIndexesOfflineForDataPhase=(BOOLEAN 'False') true の場合、データを SQL Server にインポートした後にインデックスがオフラインで再構築されます。
/p: Storage=({File|Memory}) データベース モデルの構築時に要素をどのように格納するかを指定します。 パフォーマンス上の理由から、既定値は InMemory です。 大規模なデータベースの場合は、File バックアップ ストレージが必要です。

次の手順