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

SqlPackage Extract 操作によって、DACPAC ファイル (.dacpac) に、接続されているデータベースのスキーマが作成されます。 既定では、データは .dacpac ファイルに含まれません。 データを含めるには、Export 操作を活用するか、Extract プロパティ ExtractAllTableData/TableData を使用します。

Note

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

コマンドライン構文

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

SqlPackage /Action:Extract {parameters} {properties}

注意

パスワード資格情報 (SQL 認証ユーザーなど) のあるデータベースが抽出されると、パスワードは適切な複雑度を持つ別パスワードに置換されます。 SqlPackage または DacFx ユーザーは、dacpac 公開後、パスワードを変更してください。

# example extract to create a schema-only .dacpac file connecting using SQL authentication
SqlPackage /Action:Extract /TargetFile:{filename}.dacpac /DiagnosticsFile:{logFile}.log /p:ExtractAllTableData=false /p:VerifyExtraction=true \
    /SourceServerName:{serverFQDN} /SourceDatabaseName:{databaseName} /SourceUser:{username} /SourcePassword:{password}

# example extract to create a .sql file containing the schema definition of the database
SqlPackage /Action:Extract /TargetFile:{filename}.dacpac /DiagnosticsFile:{logFile}.log /SourceServerName:{serverFQDN} \
    /SourceDatabaseName:{databaseName} /SourceUser:{username} /SourcePassword:{password} /p:ExtractTarget=File

# example extract to create a .dacpac file with data connecting using SQL authentication
SqlPackage /Action:Extract /TargetFile:{filename}.dacpac /DiagnosticsFile:{logFile}.log /p:ExtractAllTableData=true /p:VerifyExtraction=true \
    /SourceServerName:{serverFQDN} /SourceDatabaseName:{databaseName} /SourceUser:{username} /SourcePassword:{password}


# example extract to create a schema-only .dacpac file connecting using Microsoft Entra managed identity
SqlPackage /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /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 extract to create a schema-only .dacpac file connecting using Microsoft Entra username and password
SqlPackage /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /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 extract to create a schema-only .dacpac file connecting using Microsoft Entra universal authentication
SqlPackage /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" /UniversalAuthentication:True \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# example extract to create a schema-only .dacpac file connecting using an access token associated with a service principal
$Account = Connect-AzAccount -ServicePrincipal -Tenant $Tenant -Credential $Credential
$AccessToken_Object = (Get-AzAccessToken -Account $Account -Resource "https://database.windows.net/")
$AccessToken = $AccessToken_Object.Token

SqlPackage /at:$AccessToken /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# OR
SqlPackage /at:$($AccessToken_Object.Token) /Action:Extract /TargetFile:"C:\AdventureWorksLT.dacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

Extract 操作のパラメーター

パラメーター 短い形式 説明
/AccessToken: /at: {string} ターゲット データベースに接続するときに使用するトークン ベースの認証アクセス トークンを指定します。
/Action: /a: Extract 実行する操作を指定します。
/AzureCloudConfig: /acc: {string} Microsoft Entra ID に接続するカスタム エンドポイントを、AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}" の形式で指定します。
/Diagnostics: /d: {True|False} 診断ログがコンソールへの出力かどうかを指定します。 既定値は False です。
/DiagnosticsFile: /df: {string} 診断ログを保存するファイルを指定します。
/MaxParallelism: /mp: {int} 1 つのデータベースに対して実行される同時実行操作の並列処理の次数を指定します。 既定値は 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 または SQL 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 を使用したユニバーサル認証 (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 のサポート) に関するページをご覧ください。

抽出アクションに固有のプロパティ

プロパティ 説明
/p: AzureSharedAccessSignatureToken=(STRING) Azure Shared Access Signature (SAS) トークン。 「Azure Synapse Analytics の SqlPackage」および「Parquet ファイル内のデータを含む SqlPackage」を参照してください。
/p: AzureStorageBlobEndpoint=(STRING) Azure Blob Storage エンドポイント。 「Azure Synapse Analytics の SqlPackage」 および 「Parquet ファイル内のデータの SqlPackage」を参照してください。
/p: AzureStorageContainer=(STRING) Azure Blob Storage コンテナー。 「Azure Synapse Analytics の SqlPackage」 および 「Parquet ファイル内のデータの SqlPackage」を参照してください。
/p: AzureStorageKey=(STRING) Azure ストレージ アカウント キー。 「Azure Synapse Analytics の SqlPackage」 および 「Parquet ファイル内のデータの SqlPackage」を参照してください。
/p: AzureStorageRootPath=(STRING) コンテナー内のストレージ ルート パス。 このプロパティがない場合、パスの既定値は servername/databasename/timestamp/ になります。 「Azure Synapse Analytics の SqlPackage」および「Parquet ファイル内のデータを含む SqlPackage」を参照してください。
/p: CommandTimeout=(INT32 '60') SQL Server に対してクエリを実行するときのコマンドのタイムアウト (秒) を指定します。
/p: CompressionOption=({Normal|Maximum|Fast|SuperFast|NotCompressed} 'Normal') 圧縮の種類を指定します。
/p: DacApplicationDescription=(STRING) DACPAC メタデータに格納されるアプリケーションの説明を定義します。
/p: DacApplicationName=(STRING) DACPAC メタデータに格納されるアプリケーション名を定義します。 既定値は、データベース名です。
/p: DacMajorVersion=(INT32 '1') DACPAC メタデータに格納されるメジャー バージョンを定義します。
/p: DacMinorVersion=(INT32 '0') DACPAC メタデータに格納されるマイナー バージョンを定義します。
/p: DatabaseLockTimeout=(INT32 '60') SQLServer に対してクエリを実行するときのデータベース ロックのタイムアウトを秒単位で指定します。 無期限に待機するには、-1 を使用します。
/p: ExtractAllTableData=(BOOLEAN 'False') すべてのユーザー テーブルのデータを抽出するかどうかを示します。 "true" の場合、すべてのユーザー テーブルのデータが抽出されます。個々のユーザー テーブルを指定してデータを抽出することはできません。 "false" の場合、データの抽出元ユーザー テーブルを 1 つ以上指定します。
/p: ExtractApplicationScopedObjectsOnly=(BOOLEAN 'True') true の場合、指定されたソースのアプリケーション スコープのオブジェクトのみを抽出します。 false の場合、指定されたソースのすべてのオブジェクトを抽出します。
/p: ExtractReferencedServerScopedElements=(BOOLEAN 'True') true の場合、ソース データベース オブジェクトによって参照されるログイン オブジェクト、サーバー監査オブジェクト、および資格情報オブジェクトを抽出します。
/p: ExtractTarget=({DacPac|File|Flat|ObjectType|Schema|SchemaObjectType} 'DacPac') データベース スキーマの代替出力形式を指定します。既定値は 'DacPac' で、単一の .dacpac ファイルを出力します。 追加のオプションでは、'SchemaObjectType' (各スキーマおよびオブジェクトの種類のフォルダー内のファイル)、'Schema' (各スキーマのフォルダー内のファイル)、'ObjectType' (各オブジェクトの種類のフォルダー内のファイル)、'Flat' (同じフォルダー内のすべてのファイル)、または 'File' (1 つのファイル) のいずれかによって整理された 1 つ以上の .sql ファイルが出力されます。
/p: ExtractUsageProperties=(BOOLEAN 'False') テーブル行数やインデックス サイズなどの使用プロパティを、データベースから抽出するかどうかを指定します。
/p: HashObjectNamesInLogs=(BOOLEAN 'False') ログ内のすべてのオブジェクト名をランダムなハッシュ値に置き換えるかどうかを指定します。
/p: IgnoreExtendedProperties=(BOOLEAN 'False') 拡張プロパティを無視するかどうかを指定します。
/p: IgnorePermissions=(BOOLEAN 'True') アクセス許可を無視するかどうかを指定します。
/p: IgnoreUserLoginMappings=(BOOLEAN 'False') ユーザーとログイン間のリレーションシップを無視するかどうかを指定します。
/p: LongRunningCommandTimeout=(INT32 '0') SQL Server に対してクエリを実行するときの実行時間の長いコマンドのタイムアウトを秒単位で指定します。 無期限に待機するには、0 を使用します。
/p: Storage=({File|Memory}) 抽出時に使用されるスキーマ モデルのバックアップ用ストレージの種類を指定します。 'Memory' は、.NET Core バージョンの SqlPackage の既定値です。 'File' は、.NET Framework バージョンの SqlPackage でのみ使用でき、また既定値となります。
/p: TableData=(STRING) データの抽出元テーブルを示します。 テーブル名は次の形式で指定してください: schema_name.table_identifier。名前部分はかっこで囲んでも囲まなくても構いません。 このプロパティは、複数のオプションを示すために複数回指定できます。 .dacpacと Parquet ファイル、どちらから抽出されたデータにも適用されます。
/p: TempDirectoryForTableData=(STRING) パッケージ ファイルに書き込む前にテーブル データをバッファーするために使用する、一時ディレクトリを指定します。
/p: VerifyExtraction=(BOOLEAN 'False') 抽出されたスキーマ モデルを検証するかどうかを指定します。

次の手順