在 Azure Repos 中仅将存储过程和视图的更改从一个数据库发布到另一个数据库

Publish only changes from stored procedures and views from one database to another in Azure Repos

我在 visual studio 中创建了一个数据库项目,其中包括模式、table、存储过程和 table。我已将它们添加到 Azure Repos 的源代码管理中。我只想将存储过程和视图发布到另一个数据库(它们具有相同的 table 模式)。

当项目在 Azure 管道中构建时,它将为所有数据库对象创建构建,发布管道会将这些更改发布到数据库。有什么方法可以排除 table 并且只构建和发布存储过程和视图吗?

有两种方法

  1. 正如您所说,第二个目标数据库已经存在与 运行 SQLPackage.exe 相同的表,在带有参数 /p:CreateNewDatabase=False 的版本中,这意味着它将尝试更新数据库,只会添加不存在的对象(表、sps、视图、角色、用户等)或更新不同的对象(表、sps、视图、角色、用户等)。
  2. 如果您认为您的表可能不同,并且您不希望它们被完全更新和排除,那么更新 .sqlproj 文件作为构建的一部分,以将构建操作改为 none构建 <None Include="Schema Objects\Schemas\dbo\Tables\tablename.sql" />, 但请注意,如果表在存储过程 and/or 视图中被引用,那么 构建将失败 .

最好的方法是第一个。

在 Azure DevOps 中,您可以转到发布管道并将 Additional SqlPackage.exe Arguments 参数设置为 /p:ExcludeObjectTypes=Tables