Share via


VSDBCMD.EXE コマンド ライン リファレンス (配置およびスキーマのインポート)

更新 : 2010 年 7 月

VSDBCMD.EXE を使用すると、次の操作を実行できます。

  • ライブ データベースから .dbschema ファイルにデータベース スキーマをインポートする。

  • .dbschema ファイルから配置スクリプトを生成する。

  • .dbschema ファイルから配置スクリプトを精製し、そのスクリプトをターゲット データベースに配置する。

  • 2つの .dbschema ファイルを比較して配置スクリプトを生成する。

さらに、データベースを配置またはインポートする方法をカスタマイズするオプションを指定することもできます。

このツールの使用方法の詳細については、「方法: VSDBCMD.EXE を使用してコマンド プロンプトからデータベースの配置を準備する」および「方法: コマンド プロンプトからスキーマをインポートする」を参照してください。

重要

VSDBCMD.EXE を使用して、データ層アプリケーション コンポーネント (DAC) プロジェクトを配置したり、DAC プロジェクトにスキーマをインポートしたりすることはできません。

一般オプション

次の表に示すオプションは、配置アクションとインポート アクションの両方に適用されます。

オプション

省略形

必須?

説明

/Action:{Import|Deploy}

/a:{Import|Deploy}

オブジェクトと設定を .dbschema ファイルにインポートするか、.dbschema ファイルをターゲット サーバーまたはターゲット データベースに配置するかを指定します。

/ConnectionString:"String"

/cs:"String"

ターゲット データベースへの接続文字列を指定します。 たとえば、/cs:"Data Source=MyDatabase/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=AdventureWorks2008" と指定します。 スキーマをインポートするには、Initial Catalog を使用してデータベース名を指定する必要があります。 接続文字列の構文の詳細については、「接続文字列の構文 (ADO.NET)」を参照してください。

/DatabaseSchemaProvider:DspName

/dsp:DspName

接続するデータベース スキーマ プロバイダーの種類を指定します。 たとえば、SQL Server の場合は /dsp:SQL を使用します。

@File

使用できません。

1 つ以上のコマンド ライン オプションを含む応答ファイルを指定できます。

/Quiet[+|-]

/q

VSDBCMD からの詳細なフィードバックの出力を抑制するかどうかを指定します。

/DeployToDatabase[+|-]

/dd

配置スクリプトを生成し、ターゲット データベースに配置することを指定します。 このオプションを指定しなかった場合、配置スクリプトは生成されるだけで、配置されません。

/ModelFile:FileName

/model:FileName

スキーマをインポートするときに配置または作成する .dbschema ファイルの名前を指定します。 配置マニフェストを指定する場合は必要ありません。

/Properties:PropertyName=PropertyValue

/p:PropertyName=PropertyValue

コマンド プロンプトでオーバーライドするプロパティ名および値を指定します。 配置アクションおよびインポート アクションに固有のプロパティについては、「配置オプション」および「インポート オプション」を参照してください。

配置オプション

次の表に示すオプションは、.dbschema ファイルを配置する場合にのみ適用されます。

オプション

省略形

必須?

説明

/ManifestFile:FileName

/manifest:FileName

データベースを配置するときに使用する配置マニフェスト ファイルを指定します。 配置マニフェストは、データベース プロジェクトをビルドするときに、ビルド出力パスに作成されます。

メモメモ
配置マニフェスト ファイルが参照する出力スクリプト ファイルが既に存在し、読み取り専用である場合、配置は失敗します。

/DeploymentScriptFile:FileName

/script:FileName

配置スクリプトに使用する名前を指定します。

/ExtensionArguments

/ext:String

カスタム配置コントリビューターに渡すパラメーターとして名前と値のペアを指定します。

/TargetModelFile: FileName

/targetmodel: FileName

X

ソース .dbschema ファイルと比較するターゲット .dbschema ファイルを指定します。 2つの .dbschema ファイルを比較して配置スクリプトを生成するときに、このオプションを使用します。 詳細については、「VSDBCMD.EXE によるスキーマの比較」を参照してください。

注意

増分配置スクリプトを作成する場合は、ソース データベースとターゲット データベースの名前が一致する必要があります。

コマンド ラインでの個々の SQLCMD 変数のオーバーライド

次の構文を使用して、個々の SQLCMD 変数の値をオーバーライドできます。

/p: SqlCmdVariableName = Value

.sqlcmdvars ファイルに宣言されていない変数名を指定すると、エラーが発生します。

SQLCMD 変数は 3 つの時点で指定でき、次の順序で適用されます。

  1. デザイン時に、.deployment マニフェストが指す Database.sqlcmdvars に指定

  2. コマンド ラインで、/p:SqlCommandVariablesFile=Filepath を指定

  3. コマンド ラインで、変数名と値を指定

2 番目の方法は最初の方法による指定をオーバーライドし、3 番目の方法は 2 番目および最初の方法による指定をオーバーライドします。

共通の配置プロパティ

次の表に示すプロパティは、コマンド プロンプトから .dbschema ファイルを配置する場合に指定できます。

オプション

既定値

説明

/p:AbortOnFirstError={True|False}

True

最初のエラーが発生したときに、配置を取り消すかどうかを指定します。

/p:AlwaysCreateNewDatabase={True|False}

False

変更を配置するときにデータベースを更新するか、削除して再作成するかを指定します。

/p:AnsiNulls={True|False}

ソース モデルに指定された、この設定の値

ANSI_NULLS 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:AnsiPadding={True|False}

ソース モデルに指定された、この設定の値

ANSI_PADDING 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:AnsiWarnings={True|False}

ソース モデルに指定された、この設定の値

ANSI_WARNINGS 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:ArithAbort={True|False}

ソース モデルに指定された、この設定の値

ARITH_ABORT 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:BlockIncrementalDeploymentIfDataLoss={True|False}

True

データ損失が発生する可能性がある場合に配置を中止するかどうかを指定します。

/p:CheckNewConstraints={True|False}

True

制約を作成または再作成する場合、NOCHECK オプションを既定のオンのままにするかどうかを指定します。 配置スクリプトの末尾に、すべての制約を 1 組としてチェックするステートメント ブロックが追加されます。 このプロパティを True に設定すると、データ チェックが配置スクリプトの最後に実行されるため、配置プロセス中に CHECK 制約や外部キー制約によるデータ エラーが発生することなく、スキーマを配置できます。

/p:CollationPreference={UseSourceModelCollation | UseTargetModelCollation }

UseSourceModelCollation

ソース モデルとターゲット モデルを比較するときに使用する照合順序を指定します。

/p:CommentOutSetVarDeclarations={True|False}

False

変数の値を指定する SETVAR ステートメントを配置スクリプトでコメント アウトするかどうかを指定します。 SQLCMD を使用してスクリプトを配置し、それらの変数の値をコマンド プロンプトで指定する場合などに、このプロパティを True に設定します。

/p:ConcatNullYieldsNull={True|False}

ソース モデルに指定された、この設定の値

CONCAT_NULL_YIELDS_NULL 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:DeployDatabaseProperties={True|False}

True

データベース プロパティを配置スクリプトの一部として設定または更新するかどうかを指定します。

/p:DeploymentCollationPreference={UseSourceModelCollation|UseTargetModelCollation|DontChangeCollations}

DontChangeCollations

この設定は、配置の実行中にデータベースの照合順序をどのように処理するかを指定します。 次の 3 つの値のいずれかを指定できます。UseSourceModelCollation は、ソースで指定された照合順序と一致しない場合、ターゲット データベースの照合順序を更新することを示します。 UseTargetModelCollation は、ターゲット データベース (またはサーバー) の照合順序を必ず使用することを示します。 DontChangeCollations は、サーバーの照合順序を変更してはならないことを示します。

/p:DeploymentConfigurationFile=fileName

.deploymanifest ファイル内に指定されている .sqldeployment ファイル

配置するときに使用する .sqldeployment ファイルを指定します。

/p:DisableAndReenableDdlTriggers={True|False}

True

配置プロセスの開始時にデータ定義言語 (DLL) のトリガーを無効にし、配置プロセスの終了時に改めて有効にするかどうかを指定します。

/p:DoNotUseAlterAssemblyStatementsToUpdateCLRTypes={True|False}

False

相違点がある場合、配置において ALTER ASSEMBLY ステートメントを発行するのではなく、常にアセンブリを削除して再作成することを指定します。

/p:DropConstraintsNotInSource={True|False}

True

更新をターゲット データベースに配置するときに、データベース プロジェクトに存在しない制約をターゲット データベースから削除するかどうかを指定します。

/p:DropIndexesNotInSource={True|False}

True

更新をターゲット データベースに配置するときに、データベース プロジェクトに存在しないインデックスをターゲット データベースから削除するかどうかを指定します。

/p:EnforceMinimalDependencies={True|False}

False

プロシージャ、スカラー関数、およびテーブル値関数の本体を解析および解釈するかどうかを指定します。 この設定を有効にすると、本体内の依存関係は識別されませんが、オブジェクトの定義に対する変更は識別されます。 このオプションを True に設定すると、パフォーマンスは改善されますが、依存関係が失われて配置時に問題が起きる可能性があります。

/p:GenerateDatabaseOptions={True|False}

True

データベースを配置するときに、データベース オプションを設定するステートメントを配置スクリプトに含めるかどうかを指定します。

/p:GenerateDeployStateChecks={True|False}

True

データベース スキーマを配置する前にターゲット データベースの状態を確認するステートメントを配置スクリプトに含めるかどうかを指定します。

/p:GenerateDropsIfNotInProject={True|False}

False

更新をターゲット データベースに配置するときに、ターゲット データベース内のオブジェクトがソース プロジェクトに存在しない場合、それらを削除するかどうかを指定します。

/p:IgnoreAnsiNulls={True|False}

False

更新をデータベースに配置するときに、ANSI Nulls 設定の相違点を無視するか更新するかを指定します。

/p:IgnoreAuthorizer={True|False}

False

更新をデータベースに配置するときに、承認者の違いを無視するか更新するかを指定します。

/p:IgnoreColumnCollation={True|False}

False

更新をデータベースに配置するときに、列の照合順序の違いを無視するか更新するかを指定します。

/p:IgnoreComments={True|False}

False

更新をデータベースに配置するときに、コメントの違いを無視するか更新するかを指定します。

/p:IgnoreCryptographicProviderFilePath={True|False}

False

更新をデータベースに配置するときに、暗号化プロバイダーのファイル パスの違いを無視するか更新するかを指定します。

/p:IgnoreDdlTriggerState={True|False}

False

更新をデータベースに配置するときに、データ定義言語 (DDL) トリガーの有効状態または無効状態の違いを無視するか更新するかを指定します。

/p:IgnoreDefaultSchema={True|False}

False

更新をデータベースに配置するときに、既定のスキーマの違いを無視するか更新するかを指定します。

/p:IgnoreDmlTriggerOrder={True|False}

False

更新をデータベースに配置するときに、データ操作言語 (DML) トリガーの順序の違いを無視するか更新するかを指定します。

/p:IgnoreDmlTriggerState={True|False}

False

更新をデータベースに配置するときに、DML トリガーの有効状態または無効状態の違いを無視するか更新するかを指定します。

/p:IgnoreExtendedProperties={True|False}

False

更新をデータベースに配置するときに、拡張プロパティの違いを無視するか更新するかを指定します。

/p:IgnoreFilegroupPlacement={True|False}

True

更新をデータベースに配置するときに、ファイル グループに含まれるオブジェクトの配置の違いを無視するか更新するかを指定します。

/p:IgnoreFillFactor={True|False}

True

更新をデータベースに配置するときに、インデックス ストレージの FILL FACTOR の違いを無視するか警告を発行するかを指定します。

/p:IgnoreIdentitySeed={True|False}

False

更新をデータベースに配置するときに、ID 列のシードの違いを無視するか更新するかを指定します。

/p:IgnoreIncrement={True|False}

False

更新をデータベースに配置するときに、ID 列のインクリメントの違いを無視するか更新するかを指定します。

/p:IgnoreIndexOptions={True|False}

False

更新をデータベースに配置するときに、インデックス オプションの違いを無視するか更新するかを指定します。

/p:IgnoreIndexPadding={True|False}

True

更新をデータベースに配置するときに、インデックス パディングの違いを無視するか更新するかを指定します。

/p:IgnoreKeywordCasing={True|False}

True

更新をデータベースに配置するときに、キーワードの大文字と小文字の指定の違いを無視するか更新するかを指定します。

/p:IgnoreLockHintsOnIndexes={True|False}

False

更新をデータベースに配置するときに、インデックスのロック ヒントの違いを無視するか更新するかを指定します。

/p:IgnoreLoginSids={True|False}

False

更新をデータベースに配置するときに、セキュリティ識別子 (SID) の違いを無視するか更新するかを指定します。

/p:IgnoreObjectPlacementOnPartitionSchema={True|False}

True

更新をデータベースに配置するときに、パーティション テーブルまたはインデックスのパーティションからファイル グループに対するマッピングの違いを無視するか更新するかを指定します。

/p:IgnorePermissions={True|False}

False

更新をデータベースに配置するときに、アクセス許可の違いを無視するか更新するかを指定します。

/p:IgnoreQuotedIdentifiers={True|False}

False

変更をデータベースに配置するときに、引用符で囲まれた識別子設定の違いを無視するか更新するかを指定します。

/p:IgnoreRoleMembership={True|False}

False

更新をデータベースに配置するときに、ログインのロール メンバーシップを無視するか更新するかを指定します。

/p:IgnoreRouteLifetime={True|False}

True

更新をデータベースに配置するときに、SQL Server のルーティング テーブルにルートを保持する期間の違いを無視するか更新するかを指定します。

/p:IgnoreSemicolonBetweenStatements={True|False}

True

Transact-SQL ステートメント間のセミコロンの違いを無視するか、更新をデータベースに配置するときに更新するかを指定します。

/p:IgnoreStatisticsSample={True|False}

True

更新をデータベースに配置するときに、CREATE STATISTICS に使用するサンプルの違いを無視するか更新するかを指定します。

/p:IgnoreTableOptions={True|False}

False

更新をデータベースに配置するときに、テーブル オプションの違いを無視するか更新するかを指定します。

/p:IgnoreUserSettingsObjects={True|False}

False

更新をデータベースに配置するときに、ユーザー設定オブジェクトの違いを無視するか更新するかを指定します。

/p:IgnoreWhitespace={True|False}

True

更新をデータベースに配置するときに、空白の違いを無視するか更新するかを指定します。

/p:IgnoreWithNocheckOnCheckConstraints={True|False}

False

更新をデータベースに配置するときに、CHECK 制約の WITH NOCHECK 句の値の違いを無視するか更新するかを指定します。

/p:IgnoreWithNocheckOnForeignKeys={True|False}

False

更新をデータベースに配置するときに、外部キーの WITH NOCHECK 句の値の違いを無視するか更新するかを指定します。

/p:IncludeTransactionalScripts={True|False}

False

データベースに配置するときに、可能な場合にトランザクション ステートメントを使用するかどうかを指定します。

/p:NumericRoundAbort={True|False}

ソース モデルに指定された、この設定の値

NUMERIC_ROUNDABORT 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:PerformDatabaseBackup={True|False}

False

変更を行う前にターゲット データベースをバックアップするかどうかを指定します。

/p:QuotedIdentifier={True|False}

ソース モデルに指定された、この設定の値

QUOTED_IDENTIFIER 接続設定を指定します。 この設定はモデル内の値をオーバーライドします。

/p:SingleUserMode={True|False}

False

更新時にデータベースをシングル ユーザー モードにするかどうかを指定します。

/p:SqlCommandVariablesFile=FileName

.deploymanifest ファイル内に指定されている .sqlcmdvars ファイル

配置するときに使用する .sqlcmdvars ファイルを指定します。

/p:TargetDatabase="String"

使用できません。

配置先のデータベースの名前を指定します。

/p:TreatVerificationErrorsAsWarnings={True|False}

False

配置の検証中に発生したエラーを警告として扱うかどうかを指定します。 生成した配置計画がターゲット データベースに対して実行される前に、その計画のチェックが実行されます。 計画の検証では、ターゲット データベースのみに存在し、変更を実行するために削除する必要のあるオブジェクト (インデックスなど) の損失などの問題が検出されます。 検証によって、複合プロジェクトへの参照によって存在する依存関係 (テーブルやビューなど) がターゲット データベースには存在しない状況も検出されます。 最初のエラーで配置を停止するのではなく、すべての配置の問題を一覧で取得する場合などに、このオプションを選択します。

/p:UnmodifiableObjectWarnings={True|False}

True

ファイル サイズやファイル パスが異なる場合など、オブジェクト内で変更できない違いが検出されたときに、警告を生成するかどうかを指定します。

/p:VerifyDeployment={True|False}

True

配置の成功の妨げになる可能性のある問題が存在する場合に配置を停止するチェックを配置前に実行するかどうかを指定します。 たとえば、データベース プロジェクトには存在せず、配置するとエラーを引き起こす外部キーがターゲット データベースにある場合、配置が停止されることがあります。

コマンド プロンプトで次のコマンドを入力することにより、配置プロパティの完全なリストを表示できます。

VSDBCMD /? /a:Deploy /dsp:sql /cs:" ConnectionString "

共通のインポート プロパティ

次の表に示すプロパティは、.dbschema ファイルにオブジェクトおよび設定をインポートする場合にのみ適用されます。

オプション

既定値

説明

/p:IgnoreExtendedProperties={True|False}

False

拡張プロパティを無視するかインポートするかを指定します。

/p:IgnorePermissions={True|False}

False

アクセス許可を無視するかインポートするかを指定します。

メモメモ
この設定の既定値は、スキーマのインポート ウィザードを使用してインポートする場合の既定値とは異なります。

コマンド プロンプトで次のコマンドを入力することにより、インポート プロパティの完全なリストを表示できます。

VSDBCMD /? /a:Import /dsp:sql /cs:" ConnectionString "

複数の環境に配置するコマンド ラインの例

VSDBCMD を使用すると、.dbschema ファイルを複数のターゲット環境に配置できます。 この例では、EnterpriseDB.dbschema を開発環境、テスト環境、および稼動環境に配置します。

開発環境

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Development.sqldeployment 
/p:SqlCommandVariablesFile=Development.sqlcmdvars 
/cs:"Data Source=DEV\sql2008;Integrated Security=true"

テスト環境

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=UserTest.sqldeployment 
/p:SqlCommandVariablesFile=UserTest.sqlcmdvars 
/cs:"Data Source=USERTEST\sql2008;Integrated Security=true"

稼動環境

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Production.sqldeployment 
/p:SqlCommandVariablesFile=Production.sqlcmdvars 
/cs:"Data Source=PRODUCTION\sql2008;Integrated Security=true"

いずれの環境でも、そのターゲット環境に固有の配置構成、SQLCMD 変数ファイル、および接続文字列を指定します。

配置マニフェストは、すべての環境で共有されます。 配置マニフェストには、配置する .dbschema ファイルの名前が含まれます。

参照

処理手順

方法: VSDBCMD.EXE を使用してコマンド プロンプトからデータベースの配置を準備する

概念

データベースのビルドとステージング環境または稼動環境への配置

データベース プロジェクト設定の概要

履歴の変更

日付

履歴

理由

2010 年 7 月

接続文字列の例を追加しました。 /targetmodelfile の説明を追加しました。

カスタマー フィードバック

2011 年 4 月

BlockIncrementalDeploymentIfDataLoss の名前を訂正、および増分配置スクリプトの作成についての情報を追加しました。

カスタマー フィードバック