내가 할 노력하고있어의 다소 최소한의 최소한의 버전을 종료 롤백, 가변 범위는,이 아래로 비등 :거래 SQL
declare @VERSION_TO NVARCHAR(255);
declare @VERSION_CURRENT NVARCHAR(255);
set @VERSION_TO = '3.0.4401';
select @VERSION_CURRENT = VERSION from T_SYSTEM_INFO;
print 'target version: ' + @VERSION_TO
print 'current version: ' + @VERSION_CURRENT
if not @VERSION_CURRENT IN ('3.0.4300')
begin
raiserror('Patch not possible - unknown predecessor "%s"', 17, 10, @VERSION_CURRENT)
return
end
alter table T_JOB add CREATED [datetime];
update T_JOB set CREATED = (select top 1 STEP_START from T_JOB_STEP where T_JOB_STEP.JOB = T_JOB.ID and T_JOB_STEP.ID not in (select STEP from T_JOB_STEP_DEPENDENCY));
update T_JOB set CREATED = '01-01-2000' where T_JOB.CREATED is null;
alter table T_JOB alter column CREATED [datetime] not null;
update T_SYSTEM_INFO set VERSION = @VERSION_TO;
go
하지만 첫 번째 ALTER 표 후 업데이트에 실패
메시지 레벨 16, 상태 1, 줄 0 'CREATED'잘못된 열 이름입니다.
내가 넣어 경우는 마지막 UPDATE에 작동하지만, 실패,은 ALTER TABLE 후 '이동' 는 스칼라를 선언해야합니다
메시지 137, 수준 15, 상태 2, 7 호선 변수 "@VERSION_TO".
변수의 범위는 go 문으로 제한됩니다. 어쨌든, 결국에는 하나만 갖고 싶기 때문에 어떤 것이 잘못되면 변경 사항이 롤백됩니다. 그리고 이것이 가능하지 않다면 트랜잭션뿐 아니라 오류가있는 경우 어떻게 전체 스크립트를 종료 할 수 있습니까?
누구나 나를 Google의 대답으로 알려줄 수 있습니까? :)
감사
위법성이 없지만 Google에서 대답을 찾을 수 없었습니까? – Simon
나는 너무나 좌절감을 나타 냈기 때문에 나는 냉소적이었다. 나는 대답을 찾지 못했다. :) – user644342