내가 역할에 구성원을 추가 liquibase을 사용하려고하지만, SQL은 SQL 서버 2008 SQL Server 2008의실행 다른 liquibase 스크립트 SQL Server 버전에 따라
2012 년에 다른 :
exec sp_addrolemember db_datareader, MYUSER
SQL 서버 2012 :
는ALTER ROLE db_datawriter ADD MEMBER MYUSER
2012 올바르게 작동 SQL 서버에 대한 liquibase를 통해 실행할 수 있지만 SQL 서버 2008에 대해 실행했을 때 실패하고 다음 SQL 말한다 :
'추가'키워드 근처의 구문이 잘못
코드 :
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;
내가 다른 하나 개의 파일과 2012 년에 SQL Server 2008을 넣고 사용하여 버전을 분리 시도한 ' 선결 조건 '을 변경 로그의 바깥쪽에 위치시킨다. 그러나 전체 업데이트를 중지하는 HALT 또는 스크립트를 계속 유지하는 WARN은 두 가지 OnFail 옵션 만 있습니다. 둘 다 필요한 정보를 제공하지 않습니다.
변경 내용 또는 변경 로그 여부와 상관없이 스크립트가 작업중인 SQL Server의 버전을 확인하고 특정 liquibase 스크립트 만 실행할 수 있어야합니다.
이 작동하지만, 난 내가 역할에 구성원을 추가하고 각 변경 집합의 버전을 얻을 수있는 동일한 논리를하지 않았을 기대했다. – Aaron