我有一个现有的数据库,其中包含 schema 中的所有内容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
)
Run Code Online (Sandbox Code Playgroud)
这取决于 dbo.a。dbo.a 有许多列是其他列的外键。其他人(维护默认架构的人)可能会更改 dbo.a。
我想简单地将 dbo.a 存储为:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Run Code Online (Sandbox Code Playgroud)
所以它在内部构建,但没有部署。那可能吗?
小智 11
您可以使用AgileSqlClub SqlPackage 部署过滤器。
DLL
同一个文件夹sqlpackage.exe
将这些命令行参数添加到您的部署中:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
这既不会部署、删除或更改BLAH
架构中的任何内容。
有关完整详细信息,请参阅原始文章。
仅管理数据库的一部分SSDT
是很困难的。如果没有依赖关系,那么您可以简单地禁止它删除对象并且不将其包含在项目中。由于存在依赖关系,但您不想管理它们,我认为您将不得不欺骗系统。
我想到了一种方法,我现在没有能力测试它们,我只使用了一种与此“类似”的方法,而不是确切的这种方法。
选项1:
在其中创建一个新的数据库项目dbo.a
。
参考由三部分组成的命名表。对于名称的第一部分,使用 SQLCMD 变量。例如[$(DatabaseName)].dbo.a.
切勿部署foo
数据库。
通过发布文件或cli接口,使$(DatabaseName)
名称与您的真实数据库相同。
归档时间: |
|
查看次数: |
7651 次 |
最近记录: |