아래의 내용은 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 |