본문 바로가기
서버구축 (WEB,DB)

MS-SQL 간단 DB 백업 및 복구

by 날으는물고기 2009. 1. 29.

MS-SQL 간단 DB 백업 및 복구


Old machine의 'test' DB 백업 -> New machine의 'test' DB 복구

---------------------------------------------------------------------------------

1. Old machine의 'master' db를 이용하여, 'test' DB detach 하기

   EXEC sp_detach_db 'test', 'true'

   이 과정없이, Data File과 Log File을 copy 하려하면 'test' db가 사용중이어서 copy 불가

 

2. Old machine의 Data File과 Log File파일 복사 하여, New machine에 붙여넣기

   Data File -> C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Data.mdf

   Log File  -> C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Log.ldf

  

3. New machine의 'master' db를 이용하여, 'test' DB attach 하기

   EXEC sp_attach_db 'test',

   'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Data.mdf',

   'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Log.ldf'

---------------------------------------------------------------------------------

 

*  Log File은 transaction 정보가 저장되는 파일이므로, 불필요한 정보는 지워서 크기를 줄임

   DBCC SHIRINKFILE('test_Log', TRUNCATEONLY)



MS-SQL 백업자료가 무결성으로 인해 복구가 않될시 사용해 보세요...

쿼리분석기실행...

- DB백업...

   BACKUP DATABASE test_db TO DISK='d:\backup\test_db.bak' WITH INIT

위의 test_db.bak db가 복구가 않될시...

 

- 백업내용보기...

restore filelistonly from disk = 'd:\backup\test_db.bak';

 

list중 LogicalName을 확인...

------------------------------------------

LogicalName         xxxx       xxxx          xxxx

test_db_Data         .....         .....           .....

test_db_Log          .....         .....           .....

------------------------------------------

 

- 백업복구하기...

restore database test_db from disk = 'd:\backup\test_db.bak'

    with move 'test_db_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_db_Data.MDF',
           move 'test_db_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_db_Log.LDF'

 

평상시 Restore하는 시간보다 최소한 몇배의 시간이 더 걸립니다...

당황하지 마시고, 마음을 편안하게 가지시고 기다리면 됩니다...

참고로 datafile이 있는 곳으로 이동하여 datafile size가 늘어나는지 확인하여... 늘어나면 정상입니다...



MS-SQL 2005에서 백업파일 복구 후 로그인 사용자 자동 매핑 방법


MS-SQL 2005에서 백업 파일을 복구할 때 기존 설치된 곳이 아니라 신규로 설치하게 되면

사용자정보와 로그인 정보를 다시 설정해 주어야 하는데  아래 프로시저를 이용하면 된다.

 

이것을 몰라서 복구후 사용자 계정 매핑을 못해서 애를 먹었었다.

 

sp_change_users_login

기존 데이터베이스 사용자를 SQL Server 로그인에 매핑합니다.

 

*참고

sp_change_users_login은 Windows 로그인에 사용할 수 없습니다.

*주의

sp_change_users_login은 데이터베이스 사용자를 Windows 수준 보안 주체, 인증서 또는 비대칭 키에 매핑하는 데 사용할 수 없습니다.

sp_change_users_login [ @Action = ] 'action' 
    [ , [ @UserNamePattern = ] 'user' ] 
    [ , [ @LoginName = ] 'login' ] 
        [ , [ @Password = ] 'password' ]

 

사용자를 로그인에 자동으로 매핑하고 필요한 경우 새 로그인 만들기

 

다음 예에서는 Auto_Fix를 사용하여 기존 사용자를 동일한 이름의 로그인에 매핑하거나 Mary 로그인이 없는 경우 암호가 B3r12-3x$098f6인 SQL Server 로그인 Mary를 만드는 방법을 보여 줍니다.

 

예)

USE database명

go

EXEC sp_change_users_login 'Auto_Fix', '유저아이디', NULL, '패스워드';

728x90

댓글