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