가장 먼저 해야 할 일은 SQL Server 2000 데이터베이스 에서 업그레이드 관리자 를 실행하여 보고 된 모든 문제를 해결하는 것입니다.
모범 사례로 SQL Server 2000 레거시 데이터베이스에서 업그레이드 관리자 도구를 사용하고 분석을 위해 추적 파일을 업그레이드 관리자 도구로 가져옵니다. 추적 파일을 사용하면 업그레이드 관리자가 응용 프로그램에 포함 된 TSQL과 같은 간단한 데이터베이스 검색에 표시되지 않을 수있는 문제를 감지 할 수 있습니다. 일반적인 시간 동안 SQL Server 2000 서버에서 SQL 프로파일 러를 사용하여 TSQL의 추적을 캡처하고 업그레이드 관리자를 사용하여 이러한 추적을 분석 할 수 있습니다.
나머지 단계는 다음과 같습니다.
마이그레이션 당일 :
- sp_help_revlogin을 사용하여 2000 서버에서 로그인을 스크립트하십시오 .
- SQL 2000 서버에서 작업 및 링크 된 서버를 스크립트로 작성하십시오.
- 웹 서버가 2000 서버에 연결하는 것을 중지하십시오. 응용 프로그램이 2000 서버에 연결되어 있지 않은지 확인하십시오.
- 데이터베이스를 백업 하고 대상 SQL 2008 R2 서버에서 복원 하십시오.
- 2008 R2 서버에서 백업이 복원되면 2008 R2 서버에서 sp_help_revlogin의 출력을 실행하여 로그인을 다시 작성하십시오.
- 고아 사용자 (있는 경우)를 동기화 하고 새 서버에서 SQL 에이전트 작업 및 연결된 서버를 다시 만듭니다.
- 복원 된 데이터베이스의 호환성 수준을 100으로 변경하십시오.
- all_errormsgs 및 data_purity 옵션이 설정된 dbcc checkdb :
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
- 복원 된 데이터베이스에서 DBCC UPDATEUSAGE를 실행하십시오.
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
- 전체 스캔으로 모든 테이블의 통계를 업데이트하십시오.
Update Statistics table_name with FULLSCAN
- 선택 사항 : 조각화 수준을 확인하고 조각화 수준에 따라 모든 인덱스의 재구성 / 재 구축을 실행하십시오. Ola의 스크립트를 사용할 수 있습니다 .
- 를 사용하여 모든 SP를 다시 컴파일
sp_recompile 'procedureName'
- 보기 새로 고침
SP_REFRESHVIEW view_name
- 데이터베이스 옵션 : page verify를 CHECKSUM으로 변경하십시오.
- 복구 모델 (sql 2000과 다른 경우)을 FULL로 변경하십시오. 전체 복구 모델로 변경하면 트랜잭션 로그 백업을 자주 수행해야합니다. 이를 통해 특정 시점을 복구하고 T-Log를 부 풀리지 않게 할 수 있습니다.
SQL Server 2005 이상에서는 데이터베이스 메일 이 도입되었습니다. 따라서 SQLMail에서 데이터베이스 메일로 마이그레이션해야합니다.
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
또한 복제가 있으면 재설정해야합니다. logshipping 또는 Mirroring (2005 년에 새로 도입되었지만 2012 년에 감가 상각)과 같은 DR이있는 경우 재설정해야합니다.
이전 DTS 패키지는 C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(명령 줄) 또는 패키지 마이그레이션 마법사를 사용하여 SSIS로 마이그레이션해야합니다 .
또한 /dba//a/36701/8783에있는 스크립트를 사용할 수 있습니다 . 분리 / 연결 방법 을 사용하지만 BACKUP / RESTORE 방법 을 사용하는 것이 좋습니다 . 이에 따라 스크립트를 변경하십시오.
참고로 :
- 새 서버 에서 인스턴트 파일 초기화를 켜십시오.
- 크기가 같은 여러 tempdb 데이터 파일 이 있어야 합니다.
- 추적 플래그 사용 1118
- 최대 및 최소 메모리를 올바르게 구성하십시오. 특히 Max memory는 기본값과 다릅니다.
- MAXDOP 설정을 올바르게 조정하십시오. 자세한 내용은 /dba//a/36578/8783 을 참조하십시오.
- Brent Ozar의 sp_Blitz 를 설치하는 것이 가장 좋습니다 . 이를 실행하고보고 된 중요하고 우선 순위가 높은 문제를 해결하십시오.
- kendalvandyke에서 SQL Power Doc 을 사용할 수도 있습니다. SQL Power Doc 은 SQL Server 2000 에서 2012 까지의 모든 버전의 SQL Server와 Windows Server 2012 및 Windows를 통해 Windows 2000 및 Windows XP의 모든 버전의 Windows Server 및 소비자 Windows 운영 체제에서 작동합니다. 8. 업그레이드 계획 에도 유용 합니다. 인스턴스에서 사용중인 숨겨진 기능을 확인하십시오.
- 임시 작업 및 기본 백업 압축 옵션에 최적화를 활성화합니다.
당신의 질문을 해결할 수 있습니다 ...
마이그레이션을 완료하려면 어떻게해야합니까?
내 대답을 참조하십시오. 마이그레이션 계획을 올바르게 수립하는 데 도움이됩니다. 비즈니스 사용자의 적절한 응용 프로그램 테스트와 함께 UAT (비 프로덕션)로 마이그레이션 계획을 항상 테스트하십시오.
체크섬 및 전체 복구 모델과 같은 새로운 기능을 사용하십시오.
CHECKSUM
SQL Server 2005 이상에서 새로 추가되었습니다. 위에서 설명한 마이그레이션 단계의 일부로 다루었습니다.
full recovery model
새로운 것이 아닙니다. 비즈니스 유형에 따라 다르며 재해시 손실 될 수있는 데이터 양에 따라 다릅니다.
트랜잭션 로그 백업이 빈번한 전체 복구 모드를 사용하면 데이터 손실량을 줄임으로써 특정 시점으로 복원 할 수 있습니다.
이 데이터베이스를 SQL Server 2008 R2에서 생성 된 그대로 정확하게 만드십시오.
이 데이터베이스는 완벽하게 호환되고 정확하며 새로운 SQL 2008 R2 데이터베이스 엔진에 완벽하게 적합합니다.
이것을 완전히 이해하지 마십시오! 그러나 위의 마이그레이션 단계가 도움이 될 것입니다. 데이터베이스를 복원하고 100
위의 단계와 함께 호환성 수준 10 을 변경하면됩니다 .
이전 SQL Server 2000 데이터베이스를 새 2008 R2 데이터베이스로 정확하고 완벽하게 변환하는 방법을 알고 싶습니다. 모든 것이 올바르게 완료되고 모든 새로운 기능에 만족합니다.
애플리케이션 코드도 변경해야하므로이 점에주의해야합니다. 응용 프로그램 코드가 SQL Server 2008 R2의 새로운 기능을 사용하도록 변경되면 UAT 또는 DEV 환경에서 응용 프로그램의 전체 회귀 테스트를 완전히 수행 한 경우 문제가 발생하지 않습니다. 이렇게하면 PROD에서 실제 마이그레이션을 수행 할 때 최상의 신뢰를 얻을 수 있습니다.
참고 : 위의 단계는 내가 기억할 수있는 단계이며 아무것도 빠지지 않을 것이라고 확신합니다. 내가 놓친 부분이 있으면이 사이트에 다른 전문가 나 다른 전문가를 추가합니다. 자유롭게 추가하십시오!
실제 마이그레이션 중 놀라움을 피하기 위해 위에서 설명한 모든 것이 NON PRODUCTION 환경에서 먼저 재생되어야합니다.
----------
몇 가지 질문이 더 있습니다 :
백업 / 복원 방법을 사용하는 것이 좋지만 위에서 설명한대로 했으므로 지금 문제가 발생할 수 있습니까? 모든 문제없이 작동했습니다.
모든 것이 제대로 작동하고 데이터베이스를 연결할 수 있다면 NO 는 아무 문제가 없습니다. 분리 / 연결 대 백업 / 복원은 데이터베이스를 다른 장소로 이동하는 방법에 대한 방법 일뿐입니다. 단지 FYI .. 백업 / 복원 은 문제가 발생하는 것처럼 (최악의 경우)보다 안전하고 신뢰할 수 있으며 데이터베이스를 복원하고 복구 할 백업이 있어야합니다.
체크섬 및 전체 복구 모델 정보 : SQL Server 2000에서는 사용할 수 없었으며 지금 사용하고 싶습니다. 내가해야 할 유일한 것은 데이터베이스 속성에서 해당 옵션을 활성화하는 것입니까? 나는 어딘가에서 충분하지 않다는 것을 읽었으며 색인이나 무언가를 다시 만들어야합니다. 나는 정말로 모른다, 나는 단지 묻는다.
내가 말했듯이, 체크섬은 버전 2005 이상에서 새로운 것입니다. SQL Server가 특히 I / O로 인한 페이지 손상을 감지하는 메커니즘입니다. 자세한 내용은 여기 내 답변 을 참조하십시오.
CHECKSUM을 활성화하고 복구 모델을 FULL로 변경하려면 아래 T-SQL 코드를 사용하여 수행 할 수 있습니다.
USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
참고 : 데이터베이스 옵션을 설정하면 2008R2에서 2012로 마이그레이션 할 때 유지됩니다.
이 데이터베이스를 SQL Server 2012로 마이그레이션 할 준비를하고 있습니다. 따라서 처음에는 2000 년에서 2008 년까지 R2였으며 이제는 2008 년 R2에서 2012 년까지입니다 (SQL에서 2000 개의 데이터베이스를 지원하지 않기 때문에 직접 수행 할 수 없었습니다) 서버 2012). 따라서 귀하의 가이드를 따라야한다는 것을 이해합니다. 2008 R2에서 백업하고 2012 년에 복원 한 다음 나머지 팁을 수행하십시오.
예, 부탁합니다. 내가 말했듯이, 백업 복원은 적절한 이유가없는 한 선호되는 방법입니다.
백업 / 복원 방법을 설명해주세요. SQL 쿼리에 데이터베이스를 덤프 한 다음 많은 쿼리를 실행하여 복원하는 것과 같은가? 이 방법으로 데이터베이스가 "조각 모음"됩니까? 그렇지 않은 경우 수동으로 조각 모음 / 최적화하는 방법은 무엇입니까?
백업 / 복원은 ... Sybase, Oracle 또는 아마도 MySQL에서 사용되는 덤프 및로드와 유사합니다. 그것은 단지 SQL Server가 그것을 .. 백업 / 복원이라고 부릅니다.
필독 : Paul Randall의 SQL Server 백업 이해 .
간단한 구문 (전체 구문은 BOL 참조 ) :
backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10
그런 다음 대상 서버에서 다음과 같이 복원 할 수 있습니다.
-대상의 디스크 레이아웃이 원본 서버의 디스크 레이아웃과 일치하지 않는다고 가정
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10
-대상의 디스크 레이아웃이 소스 서버의 디스크 레이아웃과 일치한다고 가정
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10
이 방법으로 데이터베이스가 "조각 모음"됩니까? 그렇지 않은 경우 수동으로 조각 모음 / 최적화하는 방법은 무엇입니까?
백업 / 복원은 데이터베이스 조각 모음을 수행하지 않습니다. 조각화 수준에 따라 Alter Index Reorganize 또는 Rebuild를 사용해야합니다.
SQL Server를 처음 사용하기 때문에 Ola Hallengren 's를 사용하는 것이 좋습니다.
수년 동안 SQL Server 2000 Express를 사용하면서 (관리 인터페이스 없음) 단순히 엔진을 중지하고 DATA 디렉토리를 RAR하여 백업을 수행했습니다. 지금은 SQL Server 2008에서 Management Studio에서 백업 기능을 사용하는 것보다 낫지 않습니까?
엔진 정지는 백업을하기 위해 할 수있는 더 나쁜 일입니다 !!
내가 언급 한 백업에 대한 Paul의 링크와 Ola의 스크립트 사용을 읽으십시오. Microsoft는 자동 백업을 수행하는 스크립트가 포함 된 기술 자료 문서를 제공 합니다. SQL Server Express에서 SQL Server 데이터베이스 백업을 예약하고 자동화하는 방법
트랜잭션 로그 백업이 빈번한 전체 복구 모드 -트랜잭션 로그는 어디에 저장됩니까? LDF 파일입니까? 내가 어떻게 제대로 백업 영혼?
모든 SQL Server 데이터베이스에는 각 트랜잭션에서 수행 한 모든 트랜잭션 및 데이터베이스 수정 사항을 기록하는 로그가 있습니다. 트랜잭션 로그는 모든 데이터베이스의 중요한 구성 요소입니다.
트랜잭션 로그의 일반적인 명명 규칙 확장명은 '.LDF'이지만 아무 것도 될 수 없습니다.
나는 이것에 대해 더 많이 쓰지 않을 것입니다. 참조
트랜잭션 로그 관리 및 내 대답은 여기가 아니라 우수한 링크가 있습니다.
편집 : 2016 년 8 월 24 일 .. 이것은 미래 독자를 도울 것입니다 :
전체 인스턴스를 한 버전에서 다른 버전으로 마이그레이션하는 경우 PowerShell 기반 솔루션을 사용 하는 것이 좋습니다.Start-SqlMigration