数据库版本之间的数据迁移

有没有一种首选的方法来处理使用SSDT的数据库版本之间的数据迁移?

我们在SSDT中开发了一个大型数据库项目,使用后期部署脚本将数据插入/合并到数据库。

现在我们正面临处理更新的问题。 我们不能使用合并脚本来更新数据,因为在某些情况下,我们需要操作已经存在的数据,因此必须实现自定义更新脚本。

我已经使用dacpac版本号查看了一个解决方案,并验证哪些更新脚本可以运行,但是我意识到这个解决方案有缺点。

我到目前为止(伪代码):

CREATE Procedure [dbo].[#GetDatabaseVersion](
@DbVersion NVARCHAR(64) OUTPUT)
AS
BEGIN
    select @DbVersion = type_version from msdb.dbo.sysdac_instances_internal where     instance_name = '$(DatabaseName)'
    RETURN
END


DECLARE @DbVersion NVARCHAR(64)
EXEC #GetDatabaseVersion @DbVersion = @DbVersion OUTPUT

IF @DbVersion = '2.4.0.0'
BEGIN
  --Do some data manipulation
END

IF @DbVersion = '2.5.0.0'
BEGIN
  --Do some more data manipulation
END

上述解决方案的缺点是我不能在IF语句中使用GO语句,我们的一些代码可能需要在语句块中运行脚本。

还有什么办法从SSDT项目中获取“DacVersion”作为命令变量?

链接地址: http://www.djcxy.com/p/62327.html

上一篇: Data migrations between database versions

下一篇: What can Entity Framework Migrations do that FluentMigrator cannot?