如何配置 SQL Server Data Tools 项目以便能够在不比较和部署模式的情况下仅发布视图或存储过程

How to configure SQLServer DataTools project to be able to publish just views or stored procedures without comparing and deploying schema

我有一个由其他人管理的现有数据库。我有足够的权限创建一些视图或存储过程。不幸的是,数据库所有者有时会覆盖我的更改并且我的视图会消失。我想创建一个 SQL 服务器数据库项目,这样我就可以发布视图。我不想在我的项目中保留数据库模式(它会改变,它很大,我不关心它)。我只想拥有我的观点和 sp,并且能够在不比较模式的情况下只部署它们。可能吗?

1)

将您使用 "same database" 引用从第一个项目引用的视图和存储过程放在一个项目中,将表放在另一个项目中。

只需部署带有 views/procs 的 dacpac,不要将 IncludeCompositeProjects 设置为 true。

确保你没有启用 DropObjectsNotInSource,但这意味着如果你重命名或删除一个 proc/view 你将需要手动删除它但至少你不会删除表等

在投入生产之前对其进行适当的测试:)

2)

您正在与 "make this database look like this dacpac" 的 dacpac 模型作斗争,所以也许看看其他东西,ready roll 或 flyway 或 dbup,您仍然可以在其中源代码控制您的代码,但不必担心部署模式等。

如果您真的只需要更新视图和过程,那么您可以检查每个对象在其自己的文件中的源代码控制,例如:

create or alter xx

或者如果 sql 的旧版本:

if exists drop 其次是 create xx

使用诸如 powershell 甚至 dos 批处理脚本之类的东西来生成单个部署脚本:

ls -r *.sql | %{ "rn---file $($_) ---rn";cat $_} > ../deploy.sql

如果您需要更新的只是视图和存储的过程,那么您真的实现了梦想:)

编辑