如何检测 TFS 数据库 CLR 程序集文件,同时比较脚本文件夹从 TFS 到数据库 SQL 比较

How to detect TFS database CLR assembly file while comparing Scripts folder from TFS to Database in SQL Compare

我正在尝试使用 SQL 比较从我的 TFS 项目创建一个数据库。

目前我们使用 Visual Studio 中的比较工具将我们的数据库项目与 CI 数据库进行比较,但是,我被要求最终 运行 作为构建步骤的一部分自动化部署。

问题* SQL 比较无法识别在 visual studio 中生成的数据库程序集文件。因此,某些使用 clr 函数的计算列在部署时会失败。

我成功地使用 SQL Compare 将之前脚本化的数据库脚本化为 'Scripts Folder'。接下来,我将 SQL 的左侧与新的 'Scripts Folder' 进行比较,将右侧指向新的数据库,并在左侧检测到程序集文件。

然后我尝试将数据库程序集文件复制到 visual studio 数据库项目位置,但没有成功。

我将生成的文件 'Database.xxx.dacpac' 文件解压到一个文件夹中,并在 SQL 中将我的左侧比较设置为与之比较。 SQL 比较 "Scripts folder found with missing metadata file" 的投诉。我点击 'Compare' 后还有其他错误,但我忽略了它们。但是我的程序集文件出现了! 这应该是正确的过程吗?假设我删除了所有警告?

我希望能够将我在 visual studio 中的数据库项目文件与新数据库进行比较,并在 SQL 比较

中更新它
  1. 在解决方案资源管理器中右键单击您的数据库项目文件
  2. 转到构建 - 并查找 'Build Output Path' 的位置找到 'database.dacpac' 文件

选项A:双击并解压.dacpac 文件。在 SQL 比较中,使用选项 'Script Folder' 并使用新创建的文件夹作为源,然后您可以从 visual studio 数据库项目创建一个数据库。 SQL Compare - using DACPAC file

选项 B:使用命令行和 SSMS 应用程序sqlpackage.exe直接从 dacpac 文件创建数据库,无需提取。DACPAC Deployment using command line

选项 C:在 SSMS 中右键单击要升级的数据库 - 然后单击“任务”->'Upgrade Data-tier Application'。使用 DACPAC 文件作为来源。