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

时间:2014-05-05 15:11:25

标签: database sql-server-2012 sql-server-data-tools

是否有使用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语句,而且我们的一些代码可能需要在语句块中运行脚本。

还有什么方法可以获得" DacVersion"从SSDT项目作为命令变量?

0 个答案:

没有答案