아래의 내용은 sql 2008 에서 처리 할 수 있습니다.
오늘 계속 고민끝에 생각해서 작성 했습니다.
A데이터 베이스와 B 데이터 베이스의 각각의 같은 테이블에서
테이블 간의 컬럼 정보를 비교 하여 동기화 처리 및 한쪽의 컬럼이 변경되면 다른 한곳도 추가 하여 컬럼을 추가 해 주는 프로시져. 예제
실제 사용 예제
USE [JSCORP_CLD] GO /****** Object: StoredProcedure [dbo].[usp_alter_Col] Script Date: 01/28/2013 22:15:56 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[usp_alter_Col]( @uTable NVARCHAR(10) ) AS IF EXISTS( SELECT C.* FROM JSERP.sys.columns AS C JOIN JSERP.sys.tables T ON C.object_id = T.object_id WHERE T.name=@uTable AND C.name NOT IN ( SELECT JC.name FROM JSCORP_CLD.sys.columns JC JOIN JSCORP_CLD.sys.tables JT ON JC.object_id = JT.object_id WHERE JT.name =@uTable ) ) BEGIN DECLARE @othercol sysname DECLARE @COLNAME sysname DECLARE @DATATYPE NVARCHAR(128) DECLARE @CHARLEN INT DECLARE @NUMERICLEN TINYINT DECLARE @NUMERIC_SCALE INT DECLARE @usSql NVARCHAR(max) DECLARE COL_CR CURSOR FOR SELECT C.name FROM JSERP.sys.columns AS C JOIN JSERP.sys.tables T ON C.object_id = T.object_id WHERE T.name=@uTable AND C.name NOT IN ( SELECT JC.name FROM JSCORP_CLD.sys.columns JC JOIN JSCORP_CLD.sys.tables JT ON JC.object_id = JT.object_id WHERE JT.name =@uTable ) OPEN COL_CR FETCH NEXT FROM COL_CR INTO @othercol WHILE @@FETCH_STATUS = 0 BEGIN SELECT @COLNAME = COLUMN_NAME, @DATATYPE = DATA_TYPE, @CHARLEN = CHARACTER_MAXIMUM_LENGTH, @NUMERICLEN = NUMERIC_PRECISION,@NUMERIC_SCALE = NUMERIC_SCALE FROM JSERP.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @uTable AND COLUMN_NAME=@othercol ORDER BY ORDINAL_POSITION PRINT @COLNAME IF @DATATYPE = 'decimal' OR @DATATYPE = 'numeric' BEGIN SET @usSql = 'ALTER TABLE ' + @uTable + ' ADD ' + @COLNAME + ' ' + @DATATYPE + ' (' + CONVERT(VARCHAR(3),@NUMERICLEN ) + ',' + CONVERT(VARCHAR(3), @NUMERIC_SCALE) +') ' END ELSE BEGIN SET @usSql = 'ALTER TABLE ' + @uTable + ' ADD ' + @COLNAME + ' ' + @DATATYPE + ' (' + CONVERT(VARCHAR(3), @CHARLEN) +') ' END EXEC dbo.exec_do @usSql FETCH NEXT FROM COL_CR INTO @othercol END CLOSE COL_CR DEALLOCATE COL_CR END
'데이터베이스 > MSSQL' 카테고리의 다른 글
MSSQL 테이블 레이아웃 출력 쿼리 (0) | 2013.05.31 |
---|---|
데이터 정렬 변경 및 변경 자료 (0) | 2013.03.12 |
MSSQL CTE 재귀 쿼리(2005이상부터 사용가능) (0) | 2012.11.27 |
프로시저에서 sql 문장 받아 처리 하는 예제 (0) | 2012.11.15 |
Connection Pooling (0) | 2012.11.13 |