본문 바로가기
서버구축 (WEB,DB)

MS-SQL 2000->2005 데이터베이스 이전

by 날으는물고기 2009. 7. 3.

MS-SQL 2000->2005 데이터베이스 이전

1.[스크립트] 풀백업파일로 이동 시키는 방법

      1) SQL Server 2000 에서 데이터베이스를 풀백업한다.
        (KSD 란 이름의 데이터베이스를 백업하였다.) 

     2) 백업한 파일을 SQL Server 2005 로 이동시킨다.
        restore filelistonly from disk='C:\test.bak'를 해서 기존 디비 설정 정보를 확인 한다.
        기존 정보가 : Date : C:\Microsoft SQL Server\MSSQL\Data\KSD.MDF
                           Log : C:\Microsoft SQL Server\MSSQL\Data\KSD_Log.LDF

     3) 쿼리실행창에서 RESTORE 문을 실행시킨다.

      USE master

      RESTORE DATABASE [KSD] FROM  DISK = 'C:\KSD.bak' WITH  FILE = 1,
        MOVE 'KSD'
       
 TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\KSD.mdf'
,
        MOVE 'KSD_log'
       
 TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\KSD_Log.ldf'

      GO

      ** 현재 예제는 임의로 리렉토리를 지정해서 리스토어를 한 것입니다.
      데이터 저장위치가 위 예제와 다를경우 맞게 지정해준다.

     4) 데이터베이스의 "속성"을 확인한다.

         A) 호환성 수준 확인
              a.  KSD 데이터베이스의 현재 호환성 수준을 확인

select name,compatibility_level

from master.sys.databases

where name='KSD'

              b. 호환성수준 SQL Server 2005 로 변경 (sp_dbcmptlevel 'a','90')
           (2005의 호환성은 90 입니다. 80(2000)으로도 계속 사용가능합니다.)
                  b-1. ALTER DATABASE SET SINGLE_USER를 사용하여 데이터베이스를 단일 사용자 액세스 모드로 설정합니다.
                  b-2. 데이터베이스의 호환성 수준을 변경합니다. 
                  b-3. ALTER DATABASE SET MULTI_USER를 사용하여 데이터베이스를 다중 사용자 액세스 모드로 설정합니다.

USE master
ALTER DATABASE KSD SET SINGLE_USER
ALTER DATABASE KSD SET COMPATIBILITY_LEVEL = 90
ALTER DATABASE KSD SET MULTI_USER

그리고 계정을 생성한다 testid라고 만들었다고 가정한다.

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에서 만들어준 로그인 이름입니다.

test라는 디비에 olduser라는 계정으로 사용하고 있었는데
2005로 옮겨 지면서 test라는 디비에 newuser라는 계정으로 사용을 하고 싶다면

USE test; --복원한 DB명
GO
EXEC sp_change_users_login 'Update_One', 'olduser', 'newuser';


2. [스크립트] MDF,LDF 파일을 직접 이동시키는 방법

     1) SQL Server 2000 의 서비스를 중시시킨다.
        (서비스가 실행중이면 파일을 카피 할 수 없다.)
        KSD.mdf , KSD_Log.LDF 파일을 카피하였다 

     2) SQL Server 2008 데이터베이스 연결 을 실행한다.

         A) SQL Server 2008 데이터베이스 mdf,ldf 파일이 위치한 곳에 파일을 카피한다.

         B) 쿼리 실행창에서 파일을 데이터베이스로 연결하는 문장을 실행시킨다.

USE [master]

GO

EXEC sp_attach_db @dbname = 'KSD',

   @filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\KSD.mdf',

   @filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\KSD_Log.ldf'

GO

     3) 데이터베이스의 "속성"을 확인한다.

         A) 호환성 수준 확인
              a.  KSD 데이터베이스의 현재 호환성 수준을 확인

select name,compatibility_level

from master.sys.databases

where name='KSD'

              b. 호환성수준 SQL Server 2005 로 변경
           (2005의 호환성은 90 입니다. 80(2000)으로도 계속 사용가능합니다.)
                  b-1. ALTER DATABASE SET SINGLE_USER를 사용하여 데이터베이스를 단일 사용자 액세스 모드로 설정합니다.
                  b-2. 데이터베이스의 호환성 수준을 변경합니다.
                  b-3. ALTER DATABASE SET MULTI_USER를 사용하여 데이터베이스를 다중 사용자 액세스 모드로 설정합니다.

USE master
ALTER DATABASE KSD SET SINGLE_USER
ALTER DATABASE KSD SET COMPATIBILITY_LEVEL = 90
ALTER DATABASE KSD SET MULTI_USER

  ** 2000/2005 에서 2008 로 이전하는 내용은 아래에 있습니다. 참고하세요
        http://blog.naver.com/jicany/140053698688
        http://blog.naver.com/jicany/140053701788


출처 : http://blog.naver.com/jicany

728x90

댓글