Eu tenho um banco de dados existente com tudo no esquema dbo
. Eu tenho um projeto SSDT com objetos que estou adicionando a ele com esquemafoo
Eu tenho uma tabela que se parece com isso no projeto:
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
)
Depende do dbo.a. O dbo.a possui muitas colunas que são chaves estrangeiras para outras colunas. Outra pessoa (que mantém o esquema padrão) pode alterar o dbo.a.
Eu gostaria de armazenar simples dbo.a como:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Portanto, ele é construído internamente, mas não implantado. Isso é possível?
ssdt
deployment
Justin Dearing
fonte
fonte
Respostas:
Você pode usar o filtro de implantação AgileSqlClub SqlPackage .
Breves instruções reproduzidas do artigo original de Ed Elliott :
DLL
na mesma pasta quesqlpackage.exe
Adicione estes parâmetros de linha de comando à sua implantação:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
Isso não implementará, descartará ou alterará nada no
BLAH
esquema.Veja o artigo original para detalhes completos.
fonte
Somente o gerenciamento de parte de um banco de dados
SSDT
é difícil. Se não houvesse dependências, você poderia simplesmente impedir que ele soltasse objetos e não o incluísse no projeto. Como existem dependências, mas você não deseja gerenciá-las, acho que você precisará enganar o sistema.Um método vem à mente: não tenho a capacidade de testá-los agora e só usei um método "semelhante" a esse, não exatamente esse.
Opção 1:
Crie um novo projeto de banco de dados
dbo.a
nele.Consulte a tabela com a nomeação em três partes. Para a primeira parte do nome, use uma variável SQLCMD. Por exemplo
[$(DatabaseName)].dbo.a.
Nunca implante seu
foo
banco de dados.Através dos arquivos de publicação ou da interface cli,
$(DatabaseName)
iguale o mesmo nome que seu banco de dados real.fonte
Uma maneira interna "limpa" de fazer isso (a partir de 2016) está usando um arquivo de comparação de esquema salvo. Você pode:
Mais informações aqui: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/
fonte