여러디비를 대상으로 동일한 쿼리를 해야 하는 경우.
@exesql 에 DML, DDL 을 넣고.
적당히 DB 이름을 재정의 -> EXECUTE ('use BBS' + @cnt2 + '; ' + @exesql); 한다.
지금은 번호가 1번부터 16번이 붙는 DB를 대상으로 쿼리를 실행한다.
DECLARE @exesql varchar(8000)
DECLARE @cnt2 INT
DECLARE @maxbbsno INT
/* 실행 변경 쿼리*/
SET @exesql = 'alter table blabla add no int'
SET @cnt2 = 1
SET @maxbbsno = 16
WHILE @cnt2 <= @maxbbsno
BEGIN
print @cnt2
BEGIN TRY
EXECUTE ('use BBS' + @cnt2 + '; ' + @exesql);
/*EXECUTE (@exesql);*/
END TRY
BEGIN CATCH
SELECT
'여기서 에러 발생 bbsno : ' + cast(@cnt2 as varchar(2))
,ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
SET @cnt2 = @cnt2 + 1
END
'emotional developer > detect-server' 카테고리의 다른 글
apache virtual host ip access 설정. (0) | 2015.07.20 |
---|---|
redis 모니터링툴. (0) | 2014.07.07 |
zookeeper web ui tool - zk-web (0) | 2014.05.13 |