|
1. mssql2000에서 백업된 파일을 가지고 mssql2005서버로 온다
예) testdb를 백업해서 백업 파일이 testdb.bak라고 하고 c:\넣었다고 가정한다.
2. restore filelistonly from disk='C:\test.bak'를 해서 기존 디비 설정 정보를 확인 한다.
기존 정보가 : Date :D:\Microsoft SQL Server\MSSQL\Data\testdb_Data.MDF
Log : D:\Microsoft SQL Server\MSSQL\Data\testdb_Log.LDF
3. restore database testdb from disk='C:\testdb.bak'
with move 'testdb_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\testdb.mdf', move 'testdb_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\testdb_log.LDF'
로 실행... (여기서 경로 및 MDF, LDF는 2005에 설정되어 있는 정보에 맞게 설정해야 된다. 파일 1에서 데이터베이스 'testdb', 파일 'testdb_Data'에 대해 33528개의 페이지를 처리했습니다 . 이렇게 메시지가 나올것이다.
데이터베이스가 이전 버전의 SQL Server 에서 SQL Server 2005 로 업그레이드되면 데이터베이스는 기존 호환성 수준을 유지합니다.
4. sp_dbcmptlevel 'a' <- 'a'는 데이터베이스 이름
현재 호환성 수준은 80입니다.
5. sp_dbcmptlevel 'a','90' -- 호환성 수준을 MSSQL2005로 바꿉니다.
6. 그리고 계정을 생성한다 testid라고 만들었다고 가정한다.
7. USE db명
EXEC sp_change_users_login 'Update_One', '사용자', '로그인' 예) USE testdb
EXEC sp_change_users_login 'Update_One', 'testid', 'testid' -- 중간의 s2kuser 정보는 DB의 사용자이고, 뒤의 s2kuser는 새로 SQL 2005에서 만들어준 로그인 이름입니다.
8. test라는 디비에 olduser라는 계정으로 사용하고 있었는데 2005로 옮겨 지면서 test라는 디비에 newuser라는 계정으로 사용을 하고 싶다면
USE test; --복원한 DB명 GO EXEC sp_change_users_login 'Update_One', 'olduser', 'newuser'; |
업그레이드와 마이그레이션
님의 질문이 마이그레이션이니 이에 대한 답변을 드리겠습니다.
방법은 간단합니다.
다른 서버에 SQL2005를 설치합니다. 단 설치하실때는 언어설정 및 정렬등을 동일하게 구성하여야합니다.
설치가 끝나시면 기존 2000에서 풀백업을 받으신후에 2005에 복원하시면 됩니다.
의외로 간단히 마이그레이션이 가능합니다.
2000과 2005는 같은 DB파일 포맷을 이용하기 때문에 이렇게 백업, 복구로 가능합니다.
그리고 복원이 완료되고 나면 사용자 및 로그인 부분만 조금 조정해주시면 됩니다.
저희도 얼마전에 2005로 마이그레이션 해서 ^^
답변이 되었는지 모르겠네염 ^^
그림 이만 ^^

댓글목록
슈퍼아이피님의 댓글
restore filelistonly from disk='D:\iy_db_200902191625.BAK'
restore database iycnc from disk='D:\iy_db_200902191625.BAK'
with move 'iy_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\iycnc.mdf',
move 'iy_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\iycnclog.ldf'
sp_dbcmptlevel 'iycnc', '90'
use iycnc
exec sp_change_users_login 'Update_one', 'iy','iycnc';
슈퍼아이피님의 댓글
1. 소유자 변경
DECLARE @old sysname, @new sysname, @sql varchar(1000)
SELECT
@old = '여기에 이전 소유자 입력'
, @new = 'dbo'
, @sql = '
IF EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLES
WHERE
QUOTENAME(TABLE_SCHEMA)+''.''+QUOTENAME(TABLE_NAME) = ''?''
AND TABLE_SCHEMA = ''' + @old + '''
)
EXECUTE sp_changeobjectowner ''?'', ''' + @new + ''''
EXECUTE sp_MSforeachtable @sql
슈퍼아이피님의 댓글
2. 저장프로시저 변경
DECLARE @oldOwner sysname, @newOwner sysname
SELECT
@oldOwner = '여기에 이전 소유자 입력'
, @newOwner = 'dbo'
select 'EXECUTE sp_changeobjectowner '''+QUOTENAME(a.SPECIFIC_SCHEMA)+'.'+QUOTENAME(a.ROUTINE_NAME)+''','''+@newOwner+''''
from
INFORMATION_SCHEMA.ROUTINES a
where
a.ROUTINE_TYPE = 'PROCEDURE'
AND a.SPECIFIC_SCHEMA = @oldOwner
AND
OBJECTPROPERTY(OBJECT_ID(QUOTENAME(a.SPECIFIC_SCHEMA)+'.'+QUOTENAME(a.ROUTINE_NAME)), 'IsMSShipped') = 0
슈퍼아이피님의 댓글
USE [master]
GO
DB 이전(SQL2005->SQL2005)
EXEC sp_attach_db @dbname = N'KSD',
@filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\KSD.mdf',
@filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\KSD_Log.ldf'
GO