sqlPackage.exe не включая удаленную хранимую процедуру в сценарии развертывания

У меня есть проект базы данных SQL Server в Visual Studio, и я удалил существующую хранимую процедуру. У меня также есть база данных локально, где существует точная хранимая процедура.

Когда я запускаю сравнение схем из Visual Studio для обоих, в открывшемся окне сравнения схем я вижу хранимую процедуру, которая будет отброшена в сгенерированном сценарии развертывания. Однако когда я вызываю sqlPackage.exe из сценария Powershell, сгенерированный сценарий развертывания не содержит оператора удаления для хранимой процедуры. Интересно, что когда я изменяю хранимую процедуру, она включается в сгенерированный сценарий развертывания с оператором alter.

Почему sqlPackage.exe пропускает оператор удаления хранимой процедуры при его удалении, но включает его для изменения? Я чувствую, что это параметр, который мне нужно передать в sqlPackage.exe, но они, похоже, отказались, а не включились ( https://msdn.microsoft.com/library/hh550080(vs.103).aspx).

Ниже моя команда от Powershell:

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

1 ответ

Решение

Взгляните на свойство DropObjectsNotInSource

Указывает, будут ли объекты, которые не существуют в файле моментального снимка базы данных (.dacpac), удаляться из целевой базы данных при публикации в базе данных. Это значение имеет приоритет над DropExtendedProperties.

По умолчанию используется значение False, см. Свойство DacDeployOptions.DropObjectsNotInSource.

Другие вопросы по тегам