是否有使用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项目作为命令变量?