У меня есть база данных со всем в схеме dbo
. У меня есть проект SSDT с объектами, которые я добавляю к нему со схемойfoo
У меня есть таблица, которая выглядит так в проекте:
CREATE table foo.a (
id INT NOT NULL
CONSTRAINT [PK_foo_a] PRIMARY KEY CLUSTERED
CONSTRAINT [FK_foo_a] FOREIGN KEY REFERENCES [dbo].[a],
desc NVARCHAR(50) NOT NULL
)
Это зависит от dbo.a. В dbo.a есть много столбцов, которые являются внешними ключами других столбцов. Кто-то другой (кто поддерживает схему по умолчанию) может изменить dbo.a.
Я хотел бы просто сохранить dbo.a как:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Так что он создается внутри, а не разворачивается. Это возможно?
ssdt
deployment
Джастин Даринг
источник
источник
Ответы:
Вы можете использовать фильтр развертывания AgileSqlClub SqlPackage .
Краткие инструкции воспроизведены из оригинальной статьи по Ed Эллиот :
DLL
в ту же папку, что иsqlpackage.exe
Добавьте эти параметры командной строки в ваше развертывание:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
Это не будет ни развертывать, ни удалять, ни изменять что-либо в
BLAH
схеме.Смотрите оригинальную статью для более подробной информации.
источник
SSDT
Сложно управлять только частью базы данных . Если бы не было никаких зависимостей, то вы могли бы просто запретить ему удалять объекты и не включать его в проект. Поскольку существуют зависимости, но вы не хотите ими управлять, я думаю, что вам придется обмануть систему.Один метод приходит на ум, у меня нет возможности проверить их прямо сейчас, и я использовал только «подобный» метод для этого, а не этот точно.
Опция 1:
Создайте новый проект базы данных с
dbo.a
ним.Ссылка на таблицу с именами из трех частей. Для первой части имени используйте переменную SQLCMD. Например
[$(DatabaseName)].dbo.a.
Никогда не развертывайте свою
foo
базу данных.С помощью файлов публикации или интерфейса cli сделайте
$(DatabaseName)
то же имя, что и ваша настоящая база данных.источник
«Чистый» встроенный способ сделать это (по состоянию на 2016 год) использует сохраненный файл сравнения схем. Вы можете:
Более подробная информация здесь: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/
источник