TFS ビルドでも同様のプロセスを使用しています。これにより、新しく挿入された要素 (テーブル、列、SP、インデックスなど) が正常に処理されると確信しています。
最初に、VSDBCMD を次のように呼び出して、古い DB の .dbschema を生成します。
/a:import /dsp:sql /model:C:\PATH\old.dbschema /cs:"Server=SQLSERVER;Integrated Security=False;Pooling=False;Initial Catalog=OLDDB;User=username;Password=password;
次に、DB の最新状態の .dbschema を生成します。これは、以前のステップで (MSBuild を介して) デプロイされています。
/a:import /dsp:sql /model:C:\PATH\new.dbschema /cs:"Server=SQLSERVER;Integrated Security=False;Pooling=False;Initial Catalog=NEWDB;User=username;Password=password;
最後に、VSDBCMD を 3 回目に呼び出して、ALTER を生成します。
/a:deploy /dsp:sql /model:C:\PATH\new.dbschema /targetmodelfile:C:\PATH\old.dbschema /DeploymentScriptFile:C:\PATH\DB_Alter.sql /p:Targetdatabase="DB"
この生成された DB_Alter.sql は、DB の以前の状態を実行している実稼働 SQL に適用して、DB を最新の状態にすることができます。
あなたが暗示していることは、VSDBCMD引数を正しく形成していないか、ツールの直接的なバグにまでさかのぼる可能性があります。あなたの代わりに、ツールを手動で試して、2 つのうちどちらが当てはまるかを確認します。
私の知る限り、上記の手順は問題なく機能するため、実装に問題があると思われがちです。