1. 우선 백업할 DataBase 검색 쿼리
SELECT * FROM master.dbo.sysdatabases
MSSQL 에 생성된 모든 데이터 베이스 검색을 할 수가 있음
2. 백업 쿼리 작성
SELECT
'backup database ' + name +' to disk= ''C:\DataBaseBackUp\' + name +'.bak'''
FROM master.dbo.sysdatabases
where name like '%[DataBaseName]%'
원하는 데이터베이스 명을 조건에 입력 하고
데이터베이스 백업 파일을 C 드라이브에 DataBaseBackUp 폴더 경로로 잡아줌(폴더가 생성되어있어야함)
3. 복구 쿼리 (1) 백업한 DataBase 를 새로운 MSSQL 서버에 복구할 경우
3.1
SELECT
'RESTORE FILELISTONLY FROM DISK = ''C:\DataBaseBackUp\' + name +'.bak'''
FROM master.dbo.sysdatabases
where name like '%[DataBaseName]%'
RESTORE FILELISTONLY FROM DISK = ''C:\DataBaseBackUp\' + [DataBaseName]+'.bak'''
생성한 쿼리 조회 시 논리적/물리적인 데이터 행을 조회 할수 있습니다.
논리적 이름을 mdf/ldf 를 확인 할수 있으며
3.2
SELECT
'RESTORE DATABASE ' + name +
' FROM DISK = ''C:\DataBaseBackUp\' + [DataBaseName] +'.bak''
with move '''+ name + ''' to ''C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\' + name +'.mdf''
,move ''' + name + '_log'' to ''C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\' + name +'.ldf'''
FROM master.dbo.sysdatabases
where name like '%[DataBaseName]%'
RESTORE 진행
RESTORE DATABASE [name]
FROM DISK = 'C:\DataBaseBackUp\[name].bak'
with move '[LogicalName mdf 파일명]' to '[실제DB경로]C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\[name].mdf'
move '[LogicalName ldf 파일명]' to '[실제DB경로]C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\[name].ldf'
4. 복구 쿼리 (2) 백업한 DataBase를 기존 MSSQL 서버에 복구할경우
SELECT
'RESTORE DATABASE ' + [DataBaseName]+' FROM DISK = ''C:\DataBaseBackUp\' + name +'.bak'' with replace'
FROM master.dbo.sysdatabases
where name like '%[DataBaseName]%'
with replace 의 의미는 덮어쓴다라는 의미로 생각하면 될거같음
5. 복구 시 오류 발생 경우 [데이터베이스가 사용중인 경우]

속성 클릭

속성 -> 옵션 -> 상태 ->액세스 제한
MULTI_USER ---> SINGLE_USER 변경 후 복구 쿼리 실행
복구 완료 후 SINGLE_USER 변경된걸 MULTI_USER 로 다시 변경 하면 끝
'DataBase > Mssql' 카테고리의 다른 글
Mysql DB 복구 방법 (0) | 2019.04.17 |
---|---|
maria insert 시 중복 키 업데이트 (0) | 2018.08.05 |