본문 바로가기

emotional developer/detect-server

MS SQL 여러 디비에 변경 쿼리 실행 TSQL.


여러디비를 대상으로 동일한 쿼리를 해야 하는 경우.

@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