728x90

데이터베이스가 저장된 디스크 물리적 공간의 경로를 변경하고자 할 때, 사용하는 방법입니다.
데이터베이스를 분리하여 mdf, ldf 파일을 경로 이동한 뒤, 다시 연결하는 방법입니다.
동일한 인스턴스 내에서 파일 경로 변경이 필요하다면 ALTER DATABASE 를 사용하는 것을 권장합니다.


-- 데이터베이스 파일이 위치한 경로를 확인합니다.
SP_HELPDB
LAIGO

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\LAIGO.mdf
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\LAIGO_log.ldf


USE
MASTER
go

-- 데이터베이스를 분리합니다.
sp_detach_db
LAIGO

-- mdf, ldf 파일을 D Drive 로 Move 합니다.



-- 변경된 경로에 있는 데이터베이스 파일을 이용하여 다시 데이터베이스를 연결합니다.
EXEC
sp_attach_db @dbname = N'LAIGO', @filename1 = N'D:\LAIGO.mdf',
@filename2 = N'D:\LAIGO_log.ldf' ;

-- 정상적으로 변경되었는지 확인합니다.
SP_HELPDB
LAIGO

D:\LAIGO.mdf
D:\LAIGO_log.ldf


작성자 : Lai Go / 작성일자 : 2008.06.11
728x90

인스턴스 Pause(일시 중지)와 Stop(중지)은 어떠한 차이가 있을까?
물론, 도움말에 아주 잘 설명이 되어 있겠지요. 아래와 같이 정리하였습니다.

Microsoft SQL Server 의 인스턴스를 일시 중지하면 서버에 연결되어 있던 사용자는 작업을 마칠 수 있지만
새로 연결할 수는 없습니다. 예를 들어 서버를 종료하기 전에 SQL Server 의 인스턴스를 몇 분간 일시 중지한
다음 연결된 사용자에게 종료 메시지를 전송할 수 있습니다. 또한 SQL Server 서비스를 재개할 수도 있습니다.
 

[제어 방법]
 
1. Net command 를 사용하여 서비스 제어하는 방법
   가. SQL Server의 기본 인스턴스를 일시 중지, 재개하는 방법
        net pause MSSQLSERVER
        net continue MSSQLSERVER

 
   나. SQL Server의 기본 인스턴스를 중지, 시작하는 방법
        net stop MSSQLSERVER
        net start MSSQLSERVER

   
2. SC (NT Service Controller and Services) Command 를 사용하여 서비스 제어하는 방법
   가. SQL Server의 기본 인스턴스를 일시 중지, 재개하는 방법
       SC \\SERVERNAME pause MSSQLSERVER
       SC
\\SERVERNAME continue MSSQLSERVER

   
   나. SQL Server의 기본 인스턴스를 중지, 시작하는 방법
       SC \\SERVERNAME stop MSSQLSERVER
       SC
\\SERVERNAME start MSSQLSERVER
 
사용자 삽입 이미지






























[참고자료]
서비스 일지 중지 및 다시 시작
http://msdn.microsoft.com/ko-kr/library/ms175957.aspx

net 명령을 사용하여 명령 프롬프트에서 서비스 관리
http://msdn.microsoft.com/ko-kr/library/ms187463.aspx


작성자 : Lai Go / 작성일자 : 2008.06.11
728x90

데이터베이스 특정 시점을 복원하는 방법을 정리하였습니다.

간단한 예제를 참고하도록 합니다.


-- 테스트 데이터베이스를 생성합니다. 이때, 복구모드는 FULL(전체)로 되어 있어야 합니다.

CREATE DATABASE LAIGO

go


USE
LAIGO

go


-- 테스트 테이블을 생성합니다.

CREATE TABLE TB_TEST

(

DATA char(1)

)

go

-- A,B,C 데이터를 삽입합니다.

INSERT INTO TB_TEST VALUES('A')

INSERT INTO TB_TEST VALUES('B')

INSERT INTO TB_TEST VALUES('C')


-- 데이터를 확인합니다.
SELECT
* FROM TB_TEST


DATA

----

A

B

C


-- Full Backup 합니다.

BACKUP DATABASE LAIGO TO DISK = 'D:\LAIGO.bak' WITH INIT

-- D,E,F 데이터를  삽입합니다.

INSERT INTO TB_TEST VALUES('D')

INSERT INTO TB_TEST VALUES('E')

INSERT INTO TB_TEST VALUES('F')


-- 데이터를 확인합니다.
SELECT
* FROM TB_TEST


DATA

----

A

B

C

D

E

F



-- 로그백업1

BACKUP LOG LAIGO TO DIsk = 'D:\LAIGO_LOG1.bak'


-- G,H,I 데이터를 삽입합니다.

INSERT INTO TB_TEST VALUES('G')

INSERT INTO TB_TEST VALUES('H')

INSERT INTO TB_TEST VALUES('I')


-- 데이터를 확인합니다.
SELECT
* FROM TB_TEST


DATA

----

A

B

C

D

E

F

G

H

I



-- 현재시간을 확인합니다.

select getdate()


2008-06-11 11:30:56.293



-- 과감히 데이터를 삭제합니다.

DELETE FROM TB_TEST


(
9개행적용됨)


-- 모두 삭제 되었음을 확인할 수 있습니다.
SELECT
* FROM TB_TEST

DATA

----


-- 이제부터 복구 절차입니다. 현재 트랜잭션 로그를 백업합니다.

BACKUP LOG LAIGO TO DISK = 'D:\LAIGO_LOG2.bak' WITH NO_TRUNCATE



use
master

go

-- Full Backup 데이터 복원합니다.

RESTORE DATABASE LAIGO FROM DISK = 'D:\LAIGO.bak' WITH NORECOVERY



-- 그 다음 로그 백업 데이터를 복원합니다.

RESTORE LOG LAIGO FROM DISK = 'D:\LAIGO_LOG1.bak' WITH NORECOVERY



-- 역시 그 다음, 최종 로그 백업 데이터를 이용하여 데이터가 삭제되기 전 시점으로 복원합니다.

RESTORE LOG LAIGO FROM DISK = 'D:\LAIGO_LOG2.bak'

WITH STOPAT = '2008-06-11 11:30:56.293' , RECOVERY



-- 확인절차

USE LAIGO

Go


-- 복구가 완료되었습니다.

SELECT * FROM TB_TEST


DATA

----

A

B

C

D

E

F

G

H

I



작성자 : Lai Go / 작성일자 : 2008.06.12

+ Recent posts