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.