4

Visual Studio に SQL Server データベース プロジェクトがあり、既存のストアド プロシージャを削除しました。また、正確なストアド プロシージャが存在するデータベースをローカルに持っています。

両方で Visual Studio 内からスキーマ比較を実行すると、結果のスキーマ比較ウィンドウで、生成された配置スクリプトにドロップされるストアド プロシージャを確認できます。ただし、Powershell スクリプトから sqlPackage.exe を呼び出すと、生成された配置スクリプトにストアド プロシージャのドロップ ステートメントが含まれません。興味深いことに、ストアド プロシージャに変更を加えると、生成された配置スクリプトに変更ステートメントが含まれます。

削除するときに sqlPackage.exe がドロップ ストアド プロシージャ ステートメントを省略し、変更のために含めるのはなぜですか? sqlPackage.exe にフィードする必要があるパラメーター設定だと思いますが、オプトインではなく、オプトアウトしているようです ( https://msdn.microsoft.com/library/hh550080(vs.103).aspx#Anchor_7 )。

以下は、Powershell からの私のコマンドです。

& 'sqlPackage' '/Action:Script' "/SourceFile:$sourceDacpacFile" "/TargetFile:$targetDacpacFile" "/OutputPath:$outputPath" "/TargetDatabaseName:$targetDatabaseName" "/p:AllowIncompatiblePlatform=$allowIncompatiblePlatform" "/p:BlockOnPossibleDataLoss=$blockOnPossibleDataLoss" "/p:DropIndexesNotInSource=$dropIndexesNotInSource"
4

1 に答える 1

7

プロパティDropObjectsNotInSourceを見てください。

データベースに公開するときに、データベース スナップショット (.dacpac) ファイルに存在しないオブジェクトをターゲット データベースから削除するかどうかを指定します。この値は、DropExtendedProperties よりも優先されます。

デフォルトはFalseです。DacDeployOptions.DropObjectsNotInSource プロパティを参照してください。

于 2016-12-07T11:01:58.180 に答える