/*
  테스트용으로 northwind를 복사한 newNorthwind라는 DB를 사용합니다.
  <<백업/복원이나 DTS 와 같은 기능을 이용해서 직접 작업하시면 됩니다.>>
*/
use newNorthwind

/*
    원본 dtproperties 확인

  EM에서 작성한 다이어그램은 dtproperties 시스템 테이블에 저장된다.
  다이어그램을 복사하고자 할 경우, dtproperties 테이블의 데이터를 복사함으로써
 프로그램으로 다이어그램 복사 작업이 가능하다.

  다이어그램 하나 당 7개의 row로 구성된다.
*/

select * from northwind.dbo.dtproperties


/*
    dtproperties 테이블의 몇 가지 특징

    - 타입은 user 테이블이다.
     - EM에서는 system table 로 출력된다.
        이 테이블은 SQL Server에 의해서 내부적으로 생성되기 때문에
       'IsMSShipped' 속성을 가지고 있고 이로 인해 EM에서 system table로
      출력이 된다.
*/


select *  from sysobjects
where id = object_id('dtproperties')

-- IsMSShipped: MS SQL Server 2000에 의해서 (설치동안) 작성된 테이블
select name, objectproperty(id, 'IsMSShipped'), objectproperty(id, 'IsSystemTable') from sysobjects
where id = object_id('dtproperties')

--dtproperties 생성, 없는 경우 em에서 다이어그램 항목을 클릭하면 하면 자동 생성됨.
select * from dbo.dtproperties

-- id 컬럼이 identity 속성을 가지고 있다.
exec sp_help dtproperties


/*시작*/
--시스템 테이블에 수정을 가능하게 한다.
EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
GO

UPDATE sysobjects
SET xtype = 'U'
WHERE name = 'dtproperties'


-- 이동할 데이터베이스의 dtproperties id insert 설정
set identity_insert dtproperties on

-- 복사
INSERT INTO newnorthwind.dbo.dtproperties
 (id, objectid, property, value, uvalue, lvalue, version)
  SELECT id, objectid, property, value, uvalue, lvalue, version 
  FROM northwind.dbo.dtproperties

set identity_insert dtproperties off

--다시 테이블의 속성을 시스템 테이블로 변경한다.
UPDATE sysobjects
SET xtype = 'S'
WHERE name = 'dtproperties'


--시스템 테이블에 수정을 불가하게 한다.
EXEC sp_configure 'allow updates', 0
RECONFIGURE WITH OVERRIDE
GO

/*끝*/


--완료 후, EM 다이어그램에서 새로 고침후 확인


참고 :
DTS(Data Transfer Service) -  DTS 위져드 사용 : http://sqler.pe.kr/sql2k/1202.asp
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=39&MAEULNO=16&no=483&page=14


Posted by 귀찮은 여니씨
,