Visual Studio 2012には Schema Compare
in [〜#〜] ssdt [〜#〜] のSQL Server Database Project
(DbProject)に役立つプロジェクト
source
とtarget
を比較target
をsource
と同じになるように更新しますどこ
私の質問は、それが可能であり、この機能を呼び出すためのコマンドライン/ APIインターフェイスをどこで取得できるかということです。
ソースデータベース sqlpackage.exe/a:Extract/scs:Server =%Server%; Database = AspBaselineDB; /tf:%DriveSpec%\%DacPath%\%AspBaselineDB%_baseline.dacpac
TARGETデータベース sqlpackage.exe/a:Extract/scs:Server =%Server%; Database =%AspTargetDB-2%; /tf:%DriveSpec%\%DacPath%\%AspTargetDB%.dacpac
デルタスクリプトの比較と生成 sqlpackage.exe/a:Script /sf:%DriveSpec%\%DacPath%\%AspBaselineDB%_baseline.dacpac/tf:%DriveSpec%\%DacPath%\ AspNetDb\%AspTargetDB%.dacpac/tdn:aspTargetdb /op:%DriveSpec%\%SqlPath%\AspNetDb\AspDbUpdate.sql
スクリプトを実行します sqlcmd.exe -S%Server%\ aspnetdbAmexDev -i%DriveSpec%\%SqlPath%\ AspNetDb\AspDbUpdate.sql
IT部門は署名のないPowerShellスクリプトを許可せず、証明書を購入しないため、CMDスクリプトでこれを行います。これは、TFS 2012チームビルドから呼び出す場合や、VSコマンドプロンプトから.CMDスクリプトを管理者として実行する場合でも問題なく機能します。
注意!
スクリプトに次のSETを追加します。SET PATH =%PATH%; C:\ Program Files(x86)\ Microsoft SQL Server\110\DAC\bin
また、ご覧のとおり、パス変数を設定しています。最大50種類のデータベースに触れているため、これを実行します。これは、デルタスクリプトを生成し、DEVデータベースとTESTデータベースを更新するための唯一の一貫した方法です。
SqlPackage を見たことがありますか?
現在、スキーマ比較結果へのAPIアクセスを取得する唯一の方法は、DacServices APIのデプロイ/スクリプト操作中に実行するデプロイメントプラン修飾子/エグゼキューターを記述することです。これにより、データベースとdacpacを比較するときに生成されたデプロイメントプランを調べることができますが、スキーマ比較操作を表す ModelComparisonResult へのアクセスも提供されます。これは、-に渡されたコンテキストオブジェクトで使用できます。 OnExecute 寄稿者のメソッド。私は ブログ投稿 を書いたところです。これはこのプロセスをカバーし、あなたに役立つかもしれません。
私は 数行書いた このトピックについて少し前に。うまくいけば、あなたはそれらが役立つと思います。
一言で言えば、あなたが探しているツールはvsdbcmd.exe
、これはVisual StudioのUltimateおよびPremiumバージョンによって配布されます。