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, '패스워드';
댓글