데이터베이스

Total 205
Today 0
profile_image
슈퍼아이피
09-02-19 14:19 4개 6,859회
MSSQL
mssql2000 = > mssql2005으로 복원
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개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'testdb', 파일 'testdb_Log'에 대해 4개의 페이지를 처리했습니다 .
데이터베이스 'testdb'을(를) 버전 539에서 현재 버전 611(으)로 변환하는 중입니다.
데이터베이스 'testdb'을(를) 버전 539에서 버전 551(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 551에서 버전 552(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 552에서 버전 553(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 553에서 버전 554(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 554에서 버전 589(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 589에서 버전 590(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 590에서 버전 593(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 593에서 버전 597(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 597에서 버전 604(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 604에서 버전 605(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 605에서 버전 606(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 606에서 버전 607(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 607에서 버전 608(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 608에서 버전 609(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 609에서 버전 610(으)로 업그레이드하는 중입니다.
데이터베이스 'testdb'을(를) 버전 610에서 버전 611(으)로 업그레이드하는 중입니다.
RESTORE DATABASE이(가) 33532개의 페이지를 836.441초 동안 처리했습니다(0.328MB/초).

이렇게 메시지가 나올것이다.

 

데이터베이스가 이전 버전의 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';
-끝-
 
 
 
추가 기사 시작:
 
 
2005는 두가지 방법을 지원합니다.

업그레이드와 마이그레이션

님의 질문이 마이그레이션이니 이에 대한 답변을 드리겠습니다.

방법은 간단합니다.

다른 서버에 SQL2005를 설치합니다. 단 설치하실때는 언어설정 및 정렬등을 동일하게 구성하여야합니다.

설치가 끝나시면 기존 2000에서 풀백업을 받으신후에 2005에 복원하시면 됩니다.

의외로 간단히 마이그레이션이 가능합니다.

2000과 2005는 같은 DB파일 포맷을 이용하기 때문에 이렇게 백업, 복구로 가능합니다.

그리고 복원이 완료되고 나면 사용자 및 로그인 부분만 조금 조정해주시면 됩니다.

저희도 얼마전에 2005로 마이그레이션 해서 ^^

답변이 되었는지 모르겠네염 ^^

그림 이만 ^^

추천 0 비추천 0

댓글목록

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

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';

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

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

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

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

슈퍼아이피님의 댓글

profile_image
슈퍼아이피 작성일

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