使用SSDT对数据进行SQL Server数据库版本控制

时间:2019-03-20 09:22:47

标签: sql-server visual-studio version-control sql-server-data-tools

我有一个已经包含数据的sql server数据库。我想开始对其进行版本控制。我知道我可以在Visual Studio中使用数据库项目,并且通过导入数据库可以生成sql脚本。

但是数据库中的数据呢?我试图制作一些数据层应用程序文件,但是当我尝试将其导入Visual Studio的数据库项目中时,出现此错误:

Import Data-Tier Application File - This operation is not supported for packages containing data

那我该如何导入数据?一定要用某种方法,因为当我提取DAC文件时,有一个选项Extract Schema and Data,因此以后必须有一种使用此数据的方法。

或者也许部署后脚本是唯一的选择?

礼物

1 个答案:

答案 0 :(得分:0)

此时,您唯一的选择是使用部署后脚本填充这些表,同时考虑到脚本需要能够多次运行而无需重新插入数据的事实。如果您可能对参考数据进行了更改,则临时表/表变量和MERGE语句可能是最好的选择,否则左联接就足够了。

其他人试图包括参考数据,但是以一种对每个人都适用的方式解决这是一个非常困难的问题。我知道像埃德·埃利奥特(Ed Elliott)这样的人已经写了一些东西,可以根据需要打开/关闭它们,因此您不必每次都包含所有参考数据。您还可以研究部署后的情况,在发布和部署后,您运行一个单独的脚本来更新静态文件中的数据。它们仍然处于源代码控制中,但不一定属于您的SSDT项目。不过,您必须记住在构建中运行该脚本。

一段时间以来,我知道我们有一个仅填充查找表的数据库,因此我们可以引用该表并在需要时进行数据比较,但这仍然需要有人以持续的方式维护这些值。