2007~2011/SQL Server2011. 4. 29. 12:54
SQL Server 2008 환경에서 데이터베이스를 REBUILD 하여 Server Collation 을 변경하는 방법에 대해서 아래와 같이 정리하였습니다.


[환경]
SQL Server 2008 SP2 (x86) Standalone
-- 클러스터 환경에서는 테스트 해 보지 않았습니다.


[시나리오]
기본 인스턴스의 Collation 을 SQL_Latin1_General_CP1_CI_AS 에서 Korean_Wansung_CI_AS 로 변경




[작업 절차]

1. 데이터베이스 백업 (시스템, 사용자 데이터베이스 모두 백업)

2.
보안 로그인 계정 백업
 - SQL Server 2000 로그인 계정 이전 (전달)

3. 연결된 서버 생성 스크립트 백업

 가. Server Objects - Linked Servers



4. 사용자
데이터베이스 연결분리 스크립트 사전 생성
 가. 사용자 데이터베이스 Attach 스크립트 생성
sp_MSForEachDB 'USE [?]; SELECT ''CREATE DATABASE [?] ON PRIMARY (FILENAME = ''  + '''''''' + physical_name + '''''')
FOR ATTACH ''
 from sys.database_files 
WHERE FILE_ID = 1'

 -- 생성된 스크립트에서 시스템 데이터베이스는 Attach 대상에서 제외합니다.


 나. 사용자 데이터베이스 Detach 스크립트 생성
SELECT 'sp_detach_db '+ ''''+ name +'''' FROM sys.sysdatabases 
 -- 생성된 스크립트에서 시스템 데이터베이스는 Detach 대상에서 제외합니다.


5. 사용자 데이터베이스 분리(Detach)
 가. 위 단계에서 생성된 스크립트를 사용하여 사용자 데이터베이스를 Detach 합니다.

6. 데이터베이스 리빌드
 가. D Drive 에 SQL Server 설치 미디어를 삽입한 뒤 관리자 모드로 cmd.exe 를 수행하여 아래 명령으로 리빌드합니다.
D:\> SETUP /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER
        /SQLSYSADMINACCOUNTS="W2K8R2\Administrator" /SAPWD="PA$$w0rd
        /SQLCOLLATION=Korean_Wansung_CI_AS


[실행결과]



 나. C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log 폴더에서 Summary.txt 로그 확인

사용자 입력 설정:
  ACTION:                        RebuildDatabase
  CONFIGURATIONFILE:            
  HELP:                          False
  INDICATEPROGRESS:              False
  INSTANCENAME:                  MSSQLSERVER
  MEDIASOURCE:                   E:\
  QUIET:                         True
  QUIETSIMPLE:                   False
  SAPWD:                         *****
  SQLCOLLATION:                  SQL_Latin1_General_CP1_CI_AS
  SQLSYSADMINACCOUNTS:           W2K8R2KOR\Administrator
  X86:                           False

  Configuration file:            C:\Program Files\Microsoft ...\20110429_130126\ConfigurationFile.ini

Detailed results:
  Feature:                       데이터베이스 엔진 서비스
  Status:                        성공
  MSI status:                    성공
  Configuration status:          성공


7.
사용자 데이터베이스 연결(Attach)
 가. 앞서 생성한 데이터베이스 연결 스크립트를 사용하여 사용자 데이터베이스를 모두 연결합니다.

8.
보안 로그인 계정 복원

9. MSDB
데이터베이스 복원
 가. 처음 백업 받은 백업 파일을 사용하여 MSDB 데이터베이스를 WITH REPLACE 옵션으로 복원합니다. 

10. 연결된 서버 정보 복원
 가. 앞서 백업한 연결된 서버 생성 스크립트를 수행합니다. 

11. 서비스를 재시작 한 뒤, 버전, collation, ERRORLOG 정보를 비롯하여 데이터베이스 상태를 점검합니다.


리빌드 단계에서 문제가 발생한다면 Summary.txt 로그를 참조하여 원인을 분석하고 시간적 여유가 없다면 프로그램 추가/제거를 통해 데이터베이스 엔진을 제거한 뒤 새롭게 설치하는 것도 방법이 되겠습니다.


[참고자료]
Setting and Changing the Server Collation
http://msdn.microsoft.com/en-us/library/ms179254.aspx


작성자 : Lai Go / 작성일자 : 2011.04.29

Posted by Lai Go