0
我试图用liquibase成员添加到角色,但SQL是从SQL Server 2008至2012年运行不同liquibase脚本
SQL Server 2008中的不同:
exec sp_addrolemember db_datareader, MYUSER
的SQL Server 2012:
ALTER ROLE db_datawriter ADD MEMBER MYUSER
当通过对SQL Server运行liquibase 2012和工作正常,但是当对SQL Server 2008运行失败和下面的SQL说:
关键字附近语法不正确 'ADD'
代码:
DECLARE @ver nvarchar(50),
@intVer int,
@ver2008 int = 10
SET @ver = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @intVer = CAST(SUBSTRING(@ver, 1, CHARINDEX('.', @ver) - 1) AS int)
IF (@intVer = @ver2008)
exec sp_addrolemember db_datawriter, MYUSER
ELSE
ALTER ROLE db_datawriter ADD MEMBER MYUSER;
我试图分离版本,将SQL Server 2008中的一个文件和2012年在另一个和使用“在变更日志顶部(变更集以外)的“先决条件”。但是只有2个OnFail选项,HALT会停止整个更新,或者WARN,这只会延续脚本,这两个都不会给我所需要的。
我需要能够让脚本找出它正在使用哪个版本的SQL Server,并且只运行该特定的liquibase脚本,无论它是变更集还是更改日志。
这工作,但我希望我不会有相同的逻辑在我加入的成员到角色的每个变更获得的版本。 – Aaron