Tengo una base de datos existente con todo en el esquema dbo
. Tengo un proyecto SSDT con objetos que agrego con esquemafoo
Tengo una tabla que se ve así en el proyecto:
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 de dbo.a. dbo.a tiene muchas columnas que son claves foráneas para otras columnas. Alguien más (que mantiene el esquema predeterminado) podría cambiar dbo.a.
Me gustaría simplemente almacenar dbo.a como:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Por lo tanto, se construye internamente, pero no se implementa. ¿Es eso posible?
ssdt
deployment
Justin Dearing
fuente
fuente
Respuestas:
Puede usar el filtro de implementación AgileSqlClub SqlPackage .
Breves instrucciones reproducidas del artículo original de Ed Elliott :
DLL
en la misma carpeta quesqlpackage.exe
Agregue estos parámetros de línea de comando a su implementación:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
Esto no desplegará, eliminará ni alterará nada en el
BLAH
esquema.Vea el artículo original para más detalles.
fuente
Solo administrar parte de una base de datos
SSDT
es difícil. Si no hubiera dependencias, simplemente podría no permitir que suelte objetos y no incluirlos en el proyecto. Como hay dependencias, pero no desea administrarlas, creo que tendrá que engañar al sistema.Me viene a la mente un método, no tengo la capacidad de probarlos en este momento y solo he usado un método "similar" a este, no este exactamente.
Opción 1:
Cree un nuevo proyecto de base de datos con
dbo.a
él.Consulte la tabla con nombres de 3 partes. Para la primera parte del nombre, use una variable SQLCMD. P.ej
[$(DatabaseName)].dbo.a.
Nunca despliegue su
foo
base de datos.A través de los archivos de publicación o la interfaz cli,
$(DatabaseName)
iguale el mismo nombre que su base de datos real.fuente
Una forma integrada "limpia" de hacer esto (a partir de 2016) está utilizando un archivo guardado de comparación de esquemas. Usted puede:
Más información aquí: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/
fuente