데이터베이스

Total 205
Today 0
profile_image
슈퍼아이피
10-07-05 15:34 4개 4,662회
MSSQL
데이터 베이스 백업/복원
데이터 베이스 백업/복원


***설명
백업과 복원 모두 동일하게 하면 됩니다.

유지관리 마법사를 사용해서 모든 데이터베이스에 전체 백업을 받고,
각 데이터베이스 백업을 SQL Server 2005에서 복원가능합니다.
(단 2005의 백업을 2000에 복원할 수는 없습니다.)

백업을 명령어로 수행하시려면
BACKUP DATABASE 데이터베이스명 TO DISK = 'C:\TEMP\데이터베이스명.bak' WITH STATS = 10
복원을 명령어로 수행하려면
RESTORE DATABASE 데이터베이스명 FROM DISK = 'C:\TEMP\데이터베이스명.bak' WITH STATS = 10

그 외 서비스를 중단할 수 있다면,
데이터베이스 분리 --> 파일 복사 --> 데이터베이스 연결로도 쉽게 데이터베이스를 2005로 이동시킬 수 있습니다.


***명령어
--백업
BACUP DATABASE 데이터베이스명 TO DISK = 'C:\TEMP\데이터베이스명.bak' WITH STATS = 10

--복원
Restore Database test From Disk = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.bak'
With Move 'test_data' To 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.mdf',
Move 'test_log' To 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.ldf'

--백업파일 검사
Restore FileListOnly From Disk = 'E:\ARTS\back\new_qst_bk090601.bak';

***참고
Microsoft SQL Server Management Studio 사용시 파일경로와 이름이 제대로 안 들어가는 부분이 있음.

추천 0 비추천 0

댓글목록

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

백업파일 확인 (BAK 파일 정보)

Restore FileListOnly
From Disk = 'BAK파일경로'

백업파일 풀기 (MDF, LDF 파일로 분리후, 데이터 복원)

Restore Database 디비명
From Disk = 'BAK파일경로'
With Move 'BAK파일명_Data' To '디비명.mdf',
Move 'BAK파일명_Log' To '디비명.ldf'

실제 예제
Restore FileListOnly
From Disk = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.bak'

Restore Database test
From Disk = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.bak'
With Move 'test_data' To 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.mdf',
Move 'test_log' To 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.ldf'

이때, 'BAK파일명_Data'가 에러가 나는 경우가 있다. 그럴때는, 'BAK파일명'만 적어주면 된다.

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

A-SQLServer SQL Server에 존재하는 Migrate 데이터베이스를 B-SQLServer SQL Server로 동일한 데이터베이스명으로 이관하고 사용자(MigDBUser)가 접근 할 수 있도록 권한 처리를 한다.



이관하려는 데이터베이스를 백업
데이터베이스 백업
Microsoft SQL Server Management Studio 실행
A-SQLServer 서버에 연결한다.
Migrate 데이터베이스를 좌측 개체 탐색기에서 선택 후 우측 마우스 버튼 클릭
[작업] - [백업] 선택
데이터베이스 백업 대화상자가 열린다.
[일반] 페이지 - [대상] Section 의 추가, 제거 버튼을 클릭하여 백업할 위치지정 (파일명 예: Migrate.bak)
[확인] 버튼을 클릭


백업 데이터베이스 확인
Migrate.bak 파일이 생성되었는지 확인한다.


B-SQLServer 서버에 데이터베이스 이관
Migrate.bak 파일을 이관 B-SQLServer가 존재하는 PC 로컬 디스크에 복사 한다
Microsoft SQL Server Management Studio에서 B-SQLServer 서버 연결
좌측 개체 탐색기에 존재하는 DB중 아무거나 선택하고 우측 마우스 버튼을 클릭
[작업] - [복원] - [데이터베이스]를 선택
데이터베이스 복원 대화상자가 열린다.
[일반] 페이지 - [복원에 사용할 원본] Section의 라디오 버튼 중(데이터베이스, 장치) 장치를 선택하고 우측의 버튼을 클릭한다.
백업 지정 대화상자가 열린다.
백업 위치 영역 우측의 버튼 중 "추가"(맨 위) 버튼을 클릭한다.
Migrate.bak 파일을 찾아 선택하고 확인 버튼을 클릭한다.
백업 지정 대화상자의 확인 버튼을 클릭하여 지정을 완료한다.
장치 지정이 이뤄지면 복원에 사용할 백업 세트 선택 영역에 복원 대상 목록이 표현된다.
최근 버전에 해당하는 데이터베이스 좌측의 체크박스를 선택한다.
[일반]페이지 - [복원 대상] Section의 데이터베이스를 Migrate (생성하려는 데이터베이스명)로 지정한다.
[옵션]페이지 - [복원 옵션] Section의 데이터베이스 복원 위치를 지정한다.
Mdf(데이터베이스 파일), ldf(로그 파일) 의 위치 및 파일명을 선택한다.
이전에 존재하는 데이터베이스 일 경우, [옵션] 페이지 - [복원 옵션] Section의 최상위 체크 박스인 기존 데이터베이스 덮어쓰기를 선택한다.
위의 설정을 수행하고 확인 버튼을 클릭한다.
데이터베이스의 용량에 따라 수초에서 수분이 걸릴 수 있다.
작업이 완료되면 생성되었다는 메시지가 뜬다.


권한 설정 (삭제)
이관한 데이터베이스는 시스템이 틀리므로 이름이 동일하더라도 내부적으로 가지고 있는 SID값이 틀려 프로그램으로 접근이 불가능 하다.
SELECT * FROM maste..syslogins, SELECT * From Migrate..sysusers
위의 쿼리를 입력하면 틀린 SID값을 확인할 수 있다.
먼저 이관한 데이터베이스의 전체 권한을 제거한다.
권한 제거는 다른 UI에서 처리할 수가 없으며, 쿼리를 수행하여 삭제할 수 있다.
sp_dropuser 'MigDBUser'
좌측 개체 탐색기에서 이관한 데이터베이스를 선택하고 우측 마우스 버튼을 클릭한다.
[속성]을 선택한다.
데이터베이스 속성대화상자가 열린다.
[사용 권한] 페이지 선택을 클릭한다.
[사용자 또는 역할] 영역에 MigDBUser가 삭제되었는지 확인하고, 기타 다른 계정도 2) 항목과 같이 삭제 처리한다.


권한 설정 (추가)
좌측 개체 탐색기에서 [보안] - [로그인]을 선택하고 우측 마우스 버튼을 클릭한다.
[새 로그인]을 선택한다.
로그인 - 신규 대화상자가 열린다.
[일반] 페이지 선택을 클릭하고 로그인 이름에 MigDBUser를 입력한다.
SQL Server 인증으로 체크하고 암호를 입력한다.
암호 정책 강제 적용 등 옵션을 선택하고 기본 데이터베이스(Migrate)를 지정, 기본 언어 선택을 한다
[사용자 매핑] 페이지 선택을 클릭하고 우측에 접근할 데이터베이스 체크한다.
[데이터베이스 역할 맴버 자격] Section에서 db_datareader, db_owner등 권한에 맞도록 체크를 한다.
[확인] 버튼을 클릭하여 계정 생성을 완료한다.
=========================================================================================



MSSQL2000 에서 백업 받은 DB를 다른 서버에 있는 MSSQL2000 에 복원 시켰을때 해당 DB의 사용자가 있는데 로그인 이름이 없어 로그인이 안되는 문제가 있다.

이 문제는 해당 DB를 사용하는 사용자의 GUID가 syslogins.sid 테이블에 있는 것돠 다르기때문이다.

EM에서 사용자에 가 보면 사용자 이름은 있는데 로그인 이름은 비어 있을 것이다.이것을 해결하기 위해서는 새 서버의 로그인 계정과 복원한 DB의 사용자 를 연결해야 한다.

먼저 쿼리매니저에서 연결되지 않은 계정을 확인한다.

sp_change_users_login 'Report'
go;

하면 사용자는 있는데 연결되지 않은 사용자의 아이디가 나온다.

나오는 이름을 확인하고

sp_change_users_login 'Update_one', 'username', 'username'

go;

를 하면 연결 작업이 끝난다. EM에서 사용자를 보면 로그인 이름이 생겨있다.



이제 DB에 해당 사용자로 연결이 되는지 확인하면 된다.

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

로그인 사용자와 데이터 베이스 사용자를 연결해준다.
alter user RoseUser with login=roseuser