MS-SQL Backup/Restore/Merge RDBMS

1. 백업(BACKUP)
우선 백업과 복구는 접근권한을 득한 후 실시 한다.
(계정이 백업/복구 권한이 있는지 확인하거나, 관리자 계정으로 접근.)

BACKUP DATABASE 백업하려는DB명
TO DISK = N'경로'
WITH OPTION들을 쉼표로 구분하여 연속을 붙인다.(MS-SQL 관련 사이트 참조)
예)
BACKUP DATABASE SAMPLE_DB
TO DISK = N'D:\BACKUP.BAK'
WITH NOFORMAT, NOINIT, SKIP, NOREWIND;



2. 복구(RESTORE)
우선 해당 파일에 저장된 DB의 로컬이름을 알아낸 후 복구작업을 실시한다.
복구할 때 저장된 DB 이름이 아닌 다른 이름을 지정할 수 있다.

RESTORE FILELISTONLY FROM DISK = '경로'
이러면 실행결과로 저장된 DB의 로컬명을 알아낼 수 있다.

RESTORE DATABASE 저장할 때 지정할 DB명
FROM DISK = N'경로'
WITH FILE = 1,
MOVE N'로컬DB명' TO N'DB저장경로',
MOVE N'로컬DB로그' TO N'로그저장경로',
그 외에 OPTION들

예)
RESTORE FILELISTONLY FROM DISK = 'D:\BACKUP.BAK';
--> SAMPLE_DB
--> SAMPLE_DB_LOG

RESTORE DATABASE NEW_SAMPLE_DB
FROM DISK = N'D:\BACKUP.BAK'
WITH FILE = 1,
MOVE N'SAMPLE_DB' TO N'D:\SAMPLE_DB.MDF',
MOVE N'SAMPLE_DB_LOG' TO N'D:\SAMPLE_DB_LOG.LDF',
NOUNLOAD,
REPLACE,
STATS = 10;



3. 병합(MERGE)
MERGE 는 서로 별개의 Table을 동기화 하기 위해 만들어졌다.

MERGE 써질테이블 As W
USING 읽힐테이블 As R
ON 조건들
WHEN MATCHED + 추가조건 THEN
동작쿼리(조건은 위에 걸렸으니 조건절 넣을 필요 없음)
WHEN NOT MATCHED (BY 테이블) THEN
동작쿼리
WHEN MOT MATCHED (BY 테이블) THEN
동작쿼리
예)

MERGE BHC_DB.dbo.CALL1000 T

      USING BHC_DB_TEMP.dbo.CALL1000 S

      ON     T.cJumType = S.cJumType

      AND    T.cJumCd = S.cJumCd

      AND    T.cPosID = S.cPosID

      AND   T.cDate = S.cDATE

      AND   T.cBillNo = S.cBillNo

      WHEN NOT MATCHED THEN

            INSERT VALUES (S.cJumType, S.cJumCD, S.cPOSID, S.cDate, S.cBillNo, S.cTime, S.cTell, S.cMemo, S.cFlag)

(쌩뚱맞죠? ㅋㅋㅋ)


머지의 경우 다른 쿼리(SELECT - INSERT - Update)에 비해 속도가 월등히 빠르다.




덧글

댓글 입력 영역