프로그래밍/DB 2010. 1. 8. 17:50


테이블 복사가 필요한 경우가 있다.

데이터 복사만 필요한 경우라면 쉽게 해결 되지만,

테이블의 제약조건등과 요소가 필요한 경우에는 여러 가지

고려해야 하는 것들이 있다.

 

그럼 테이블 복사를 해보도록 하겠다.

 

1.     테이블을 복사하는 가장 단순한 방법

SELECT  * INTO  TmpTable

FROM     OriTable

 

2.     테이블 생성 후, 데이터 + 제약조건 복사

CREATE TABLE TmpTable (

  ID INT NOT NULL PRIMARY KEY,

  Name VARCHAR(40) NOT NULL

)

 

SELECT  * INTO  TmpTable

FROM     OriTable


3.     테이블 생성 후, 데이터 + 제약조건 + IDENTITY 복사

 ‘*’를 사용할 수 없고 명시적으로 Column명을 선언해 줘야 한다.

 

CREATE TABLE TmpTable (

  ID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,

  Name VARCHAR(40) NOT NULL

)

SET IDENTITY_INSERT TmpTable ON

 

INSERT  INTO TmpTable ( ID,  Name )

SELECT  ( ID,  Name )

FROM    OriTable


4. 테이블 + 제약조건 + 인덱스 + 트리거 복사 ( SSMS 사용 : SQL Server Management Studio )

※ 스크립트 생성 의도에 맞게 옵션을 선택하고 실행하면 되지만,
스크립트가 생성 하려는 테이블 + 제약조건 + 인덱스 + 트리거가 존재하는 경우 충돌이 일어날 수 있다.
[ 중복확인 Tip ] => 아래 확인



1. 서버의 테이터베이스 선택 > 작업 > 스크립트 생성

2. 생성한 스크립트 실행




[ 중복 확인 팁 ]

SP_DEPENDS [테이블명]          -- 테이블종속성확인

SP_HELPCONSTRAINT [테이블명]   -- 테이블제약조건확인

SP_HELPINDEX [테이블명]         -- 테이블인덱스확인

 

/* 테이블을 사용하는 프로시져 검색*/

SELECT  *

FROM    sys.procedures

WHERE   OBJECT_DEFINITION(OBJECT_ID) LIKE '%[테이블명]%'

 

/*  테이블을 사용하는 트리거 검색*/

SELECT  *

FROM    sys.triggers

WHERE   OBJECT_DEFINITION(OBJECT_ID) LIKE '%[테이블명]%'

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. ㅇㅅㅇ 2013.02.22 13:36  댓글주소  수정/삭제  댓글쓰기

    잘 보고 가요~ 덕분에 세팅 잘 했네요

  2. 오즈마스터™ 2020.01.23 14:38 신고  댓글주소  수정/삭제  댓글쓰기

    2.번항목이 좀 잘못된듯 싶어서요.

    테이블 생성후 select * into ...... 는 안되지 않나요?
    이미 테이블이 존재하기 때문에





프로그래밍/DB 2009. 12. 24. 18:01


Access Pattern이란?
말 그대로 접근(Access) 하는 양식(Pattern) 이다.
원하는 데이터를 빠르게 얻기 위해 접근 하는 방법 정도로 이해하면 될것 같다. ( 아마도 ^^ ) 
억세스 패턴 처음 시간으로 용어 정리를 하도록 하겠다.

1.
용어정리

 

A. 페이지(Page) 

    1. 데이터를 저장하고 처리하는데 사용되는 가장 기본적인 입출력 단위이다.

    2. 저장하는 데이터와 그 내부 구성에 따라 8가지 형태로 나뉜다.

  - Data : text, ntext, image 형태를 제외한 모든 데이터 레코드

  - Index : 인덱스 데이터 저장

  - Text / Image : text, ntext, image 형태의 데이터 저장

  - GAM : Global Allocation Map, 할당된 익스텐트 정보들을 저장

  - PFS : Page Free Space, 페이지의 여유 공간 정보를 저장

  - IAM : Index Allocation Map, 테이블과 인덱스에 의해 사용되는 익스텐트 정보들을 저장


  - BCM : Bulk Changed Map, 마지막 백업 로그문 이후의 벌크 잡업에 의해 수정된 익스텐트 정보들 저장

  - DCM : Differential Changed Map, 마지막 백업 데이터베이스문 이후에 변경된 익스텐트 정보들 저장

 

B. 익스텐트(Extent)

    
1. 서버에서 테이블과 인덱스를 저장하고 관리하는데 사용되는 공간의 기본 할당 단위이다.
     2. 연속된 8개의 페이지들로 이루어져 있다.
     3. 구성된 페이지 종류에 따라 혼합 익스텐트(Mixed Extent)와 단일 익스텐트(Uniform Extent)로 나뉜다.

 

C. 인덱스

  1. 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. ( 책 뒷부분에 있는 색인과 같은 역할 )

  2. 잦은 데이터의 변경 작업 ( INSERT, UPDATE, DELETE ) 시에 성능이 나빠지는 단점이 있다.

  3. 테이블의 하나 이상의 필드를 인덱스 필드로 지정할 수 있다.

 

- 클러스터드 인덱스 : Clustered Index, 단순하게 영어사전 처럼 구성된 책과 같다.
    영어사전과 같이 책의 내용 자체가 순서대로 정렬이 되어 있어서 인덱스 자체가 책의 내용과 같다.
    클러스터드 인덱스로 만들어진 클러스터드 인덱스 테이블은 "인덱스 순서 = 물리적인 페이지 순서"
    라는 말이다. 인덱스 순서와 물리적인 데이터 페이지 순서가 동일하므로 데이터를 검색할 때 가장
    빠를 수 밖에 없다.

- 비클러스터드 인덱스 : Non-Clustered Index, 그냥 색인이 있는 일반 책과 같다. 인덱스가 별도로 있고
    인덱스를 찾은 후에 기재된 해당 페이지로 가야만 ( Lookup ) 실제 내용을 접할 수 있다.

- : Heap, 데이터를 아무런 순서 없이 저장한느 형태, 비클러스터드 인덱스를 사용하거나 인덱스가
    없는 경우, 즉 클러스터드 인덱스가 아닌 경우 이다.
    힙 형태인 경우 해당 데이터 페이지들간에 아무련 연관이 존재하지 않는다. 따라서 전체 데이터
    페이지들을 풀 스캔(Full Scan)할 수 밖에 없다.


YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST