SSDT предотвращает удаление синонимов при публикации - PullRequest
0 голосов
/ 09 июля 2020

Фон

Мы используем SQL Server Data Tools (SQL Project), предназначенный для SQL Server 2012, который использует DACPA C для публикации sh в в различных средах.

Проблема

Каждый раз, когда мы публикуем sh SSDT, синонимы удаляются и воссоздаются заново на основе сгенерированного сценария publi sh. Мы хотим предотвратить это, поскольку у нас есть хранимая процедура, которая отвечает за установку правильных целевых синонимов для каждой среды.

GO
PRINT N'Dropping [dbo].[MY_SYNONYM]...';
GO
DROP SYNONYM [dbo].[MY_SYNONYM];
GO
PRINT N'Creating [dbo].[MY_SYNONYM]...';
GO
CREATE SYNONYM [dbo].[MY_SYNONYM] FOR [MY_DEFAULT_TARGET];

Я пробовал установить действие сборки синонимов на что-нибудь еще, кроме Build, но это вызывает проблему с компилятором и приводит к неудачной сборке.

Наша основная цель - предотвратить повторное создание синонимов для синонимов, которые не изменили цели. Мы знаем, что можем справиться с этим в нашей хранимой процедуре, используя sys.synonyms для сравнения. Любая помощь приветствуется, спасибо.

EDIT:

Я вижу ff в расширенных настройках Publi sh, но мы не хотим включать Drop objects in target but not in source. Мы хотим, чтобы синонимы в проекте не создавались повторно во время публикации sh.

DoNotDropSynonyms

1 Ответ

0 голосов
/ 16 июля 2020

Благодаря рекомендации @Bill Jetzer мне удалось найти ff в профиле publi sh:

Exclude object types

Apparently there's an option /p:ExcludeObjectType=Synonyms for SqlPackage , если мы хотим сделать это с помощью командной строки.

После установки флажка «Исключить синонимы» в профиле publi sh была добавлена ​​строка ниже:

<PropertyGroup>
    ...
    <ExcludeSynonyms>True</ExcludeSynonyms>
</PropertyGroup>
...