Bước đầu tiên cần làm là chạy Trình cố vấn nâng cấp trên cơ sở dữ liệu SQL Server 2000 và giải quyết tất cả các vấn đề được báo cáo.
Cách tốt nhất, sử dụng công cụ Trình cố vấn nâng cấp trên cơ sở dữ liệu kế thừa SQL Server 2000 của bạn và nhập tệp theo dõi vào công cụ Trình cố vấn nâng cấp để phân tích. Tệp theo dõi cho phép Trình cố vấn nâng cấp phát hiện các sự cố có thể không hiển thị trong quá trình quét cơ sở dữ liệu đơn giản, chẳng hạn như TSQL được nhúng trong các ứng dụng. Bạn có thể ghi lại dấu vết TSQL bằng SQL Profiler trên máy chủ SQL Server 2000 của mình trong những giờ thông thường và phân tích các dấu vết này bằng Trình cố vấn nâng cấp.
Vì vậy, các bước còn lại sẽ là:
Vào ngày di cư:
- kịch bản đăng nhập của chúng tôi trên máy chủ 2000 bằng cách sử dụng sp_help_Vvlogin .
- Script ra các công việc và máy chủ được liên kết từ máy chủ sql 2000.
- dừng máy chủ web kết nối với 2000 máy chủ. Đảm bảo rằng không có ứng dụng nào đang kết nối với máy chủ 2000.
- sao lưu cơ sở dữ liệu của bạn và khôi phục trên máy chủ đích sql 2008 R2. (lưu ý: Không tách / đính kèm vì mọi thứ có thể sai và bạn sẽ kết thúc với cơ sở dữ liệu tách rời và không có bản sao lưu!)
- Khi các bản sao lưu của bạn được khôi phục trên máy chủ 2008 R2, hãy chạy đầu ra từ sp_help_Vvlogin trên máy chủ 2008 R2 để tạo lại thông tin đăng nhập.
- Đồng bộ hóa người dùng mồ côi (Nếu có) và tạo lại các công việc đại lý sql và các máy chủ được liên kết trên máy chủ mới.
- thay đổi mức độ tương thích trên cơ sở dữ liệu được khôi phục thành 100.
- Dbcc checkdb với tùy chọn all_errormss và data_purity được bật:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
- chạy DBCC UPDATEUSAGE trên cơ sở dữ liệu được khôi phục
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
- Cập nhật số liệu thống kê trên tất cả các bảng với quét toàn bộ:
Update Statistics table_name with FULLSCAN
- Tùy chọn: Kiểm tra các mức phân mảnh và tùy thuộc vào cấp độ phân mảnh, chạy reorg / xây dựng lại tất cả các Chỉ mục. Bạn có thể sử dụng tập lệnh của Ola .
- Biên dịch lại tất cả các SP đang sử dụng
sp_recompile 'procedureName'
- Làm mới quan điểm của bạn
SP_REFRESHVIEW view_name
- đảm bảo thay đổi tùy chọn cơ sở dữ liệu: trang xác minh thành CHECKSUM.
- Thay đổi mô hình khôi phục (nếu khác với sql 2000) thành FULL. Nếu bạn thay đổi thành mô hình phục hồi ĐẦY ĐỦ, thì HÃY ĐẢM BẢO bạn thường xuyên sao lưu Nhật ký giao dịch. Điều này sẽ giúp bạn khôi phục tại thời điểm cũng như không làm hỏng T-Log của bạn.
Trong SQL Server 2005 trở lên, Database Mail đã được giới thiệu. Vì vậy, bạn phải di chuyển từ SQLMail sang Database Mail.
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
Ngoài ra, nếu bạn có bất kỳ bản sao nào, thì bạn phải thiết lập lại nó. Nếu bất kỳ DR nào như logshipping hoặc Mirroring (mới trong năm 2005 trở lên, nhưng đã khấu hao vào năm 2012) thì bạn cũng phải thiết lập lại nó.
Các gói DTS cũ cần được di chuyển sang SSIS bằng cách sử dụng C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(dòng lệnh) hoặc sử dụng Trình hướng dẫn di chuyển gói .
Ngoài ra, bạn có thể sử dụng tập lệnh của tôi được tìm thấy tại /dba//a/36701/8783 . Mặc dù, nó sử dụng phương pháp tách / đính kèm, tôi khuyên bạn nên sử dụng phương pháp BACKUP / RESTORE . Thay đổi kịch bản cho phù hợp.
Như một lưu ý phụ:
- bật Khởi tạo tệp tức thì trên máy chủ mới.
- Có nhiều tệp dữ liệu tempdb với kích thước bằng nhau.
- Kích hoạt cờ Trace 1118
- Cấu hình bộ nhớ tối đa và tối thiểu chính xác. Đặc biệt là bộ nhớ Max cách xa mặc định.
- Điều chỉnh đúng các cài đặt MAXDOP. Tham khảo /dba//a/36578/8783 để biết thêm chi tiết.
- Tốt nhất là cài đặt sp_Blitz từ Brent Ozar. Chạy nó và giải quyết các vấn đề quan trọng và ưu tiên cao được báo cáo bởi nó.
- Bạn thậm chí có thể sử dụng SQL Power Doc từ kendalvandyke - SQL Power Doc hoạt động với tất cả các phiên bản SQL Server từ SQL Server 2000 đến 2012 và tất cả các phiên bản Windows Server và hệ điều hành Windows tiêu dùng từ Windows 2000 và Windows XP cho đến Windows Server 2012 và Windows 8. Cũng hữu ích cho việc lập kế hoạch nâng cấp - xem các tính năng ẩn nào được sử dụng trên một ví dụ.
- Bật Tối ưu hóa cho khối lượng công việc đặc biệt và các tùy chọn nén sao lưu mặc định.
Hãy giải quyết câu hỏi của bạn ...
Tôi nên làm gì khác để hoàn thành việc di chuyển?
Tham khảo câu trả lời của tôi. Nó sẽ giúp bạn đưa ra một kế hoạch di chuyển đúng đắn. Luôn kiểm tra kế hoạch di chuyển của bạn trong UAT (không sản xuất) cùng với thử nghiệm ứng dụng phù hợp của người dùng doanh nghiệp.
sử dụng các tính năng mới như kiểm tra và mô hình phục hồi đầy đủ.
CHECKSUM
là phiên bản mới trong SQL Server 2005 trở lên. Tôi đã trình bày nó như là một phần của các bước di chuyển được mô tả ở trên.
full recovery model
không phải là mới Nó phụ thuộc vào loại hình kinh doanh của bạn và quyết định số lượng dữ liệu bạn có thể mất trong trường hợp thảm họa.
Chế độ khôi phục hoàn toàn với sao lưu nhật ký giao dịch thường xuyên sẽ cho phép bạn khôi phục tại thời điểm và tại đó bằng cách giảm lượng mất dữ liệu.
làm cho cơ sở dữ liệu này chính xác như được tạo trong SQL Server 2008 R2.
làm cho cơ sở dữ liệu này hoàn toàn tương thích, chính xác và hoàn toàn phù hợp với công cụ cơ sở dữ liệu SQL 2008 R2 mới.
Đừng hiểu điều này! Nhưng các bước di chuyển trên sẽ giúp bạn. Bạn chỉ cần khôi phục cơ sở dữ liệu và thay đổi mức độ tương thích 10 100
cùng với các bước trên.
Tôi chỉ muốn biết cách chuyển đổi chính xác và hoàn toàn cơ sở dữ liệu SQL Server 2000 cũ sang cơ sở dữ liệu 2008 R2 mới, hãy bình tĩnh rằng mọi thứ đều được thực hiện đúng và hài lòng với tất cả các tính năng mới.
Bạn phải cẩn thận với điều này, vì điều này cũng sẽ yêu cầu thay đổi mã ứng dụng của bạn. Nếu mã ứng dụng của bạn được thay đổi để sử dụng các tính năng mới trong SQL Server 2008 R2, thì bạn sẽ không gặp phải bất kỳ vấn đề nào - CUNG CẤP bạn đã hoàn thành kiểm tra hồi quy hoàn toàn cho ứng dụng của mình trong môi trường UAT hoặc DEV. Điều này sẽ mang lại cho bạn sự tự tin tốt nhất khi bạn thực hiện di chuyển thực tế trong SẢN PHẨM.
Lưu ý: Trên đây là các bước mà tôi có thể nhớ và tôi khá chắc chắn rằng không có gì bị bỏ sót. Nếu tôi thấy rằng tôi đã bỏ lỡ một số thứ, sau đó tôi sẽ thêm nó hoặc các chuyên gia khác trên trang web này - vui lòng thêm!
Tất cả mọi thứ được phác thảo ở trên trước tiên cần được phát lại trên môi trường KHÔNG SẢN XUẤT để tránh bất kỳ sự ngạc nhiên nào trong quá trình di chuyển thực tế.
----------
Một số câu hỏi khác:
Bạn khuyên bạn nên sử dụng phương pháp sao lưu / khôi phục, nhưng tôi đã làm như đã viết ở trên, vậy bây giờ tôi có thể gặp phải bất kỳ vấn đề nào không? Tất cả mọi thứ làm việc mà không có bất kỳ vấn đề.
Nếu mọi thứ đều hoạt động tốt và bạn có thể đính kèm cơ sở dữ liệu, thì KHÔNG bạn sẽ không gặp vấn đề gì. Detach / Đính kèm vs Sao lưu / Khôi phục chỉ là một phương pháp về cách bạn di chuyển cơ sở dữ liệu của bạn đến một nơi khác. Chỉ cần FYI .. Sao lưu / Khôi phục là an toàn và đáng tin cậy hơn nếu có bất cứ điều gì sai (trong trường hợp xấu nhất) thì ít nhất bạn cũng có một bản sao lưu để khôi phục và khôi phục cơ sở dữ liệu của mình.
Về kiểm tra và mô hình khôi phục đầy đủ: nó không khả dụng / được bật trên SQL Server 2000, vì vậy tôi muốn sử dụng chúng ngay bây giờ. Bạn nói rằng điều duy nhất tôi cần làm là kích hoạt các tùy chọn đó trong các thuộc tính cơ sở dữ liệu? Tôi đã đọc ở đâu đó, rằng nó không đủ và tôi cũng nên xây dựng lại các chỉ mục hoặc một cái gì đó. Tôi thực sự không biết, tôi chỉ hỏi.
Như tôi đã nói, tổng kiểm tra là phiên bản mới từ năm 2005 trở lên. Đây là một cơ chế mà SQL Server sẽ phát hiện tham nhũng trang đặc biệt là do I / O. Tham khảo câu trả lời của tôi ở đây để biết thêm chi tiết.
Để bật CHECKSUM cũng như thay đổi mô hình khôi phục thành FULL, bạn có thể thực hiện bằng cách sử dụng mã T-SQL bên dưới:
USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
Lưu ý: Khi bạn đặt các tùy chọn cơ sở dữ liệu, nó sẽ được duy trì khi bạn thực hiện di chuyển từ 2008R2 sang 2012.
Tôi đang chuẩn bị di chuyển cơ sở dữ liệu này sang SQL Server 2012 - vì vậy trước tiên là từ 2000 đến 2008 R2, bây giờ sẽ là từ 2008 R2 đến 2012 (không thể thực hiện điều này trực tiếp vì thiếu sự hỗ trợ của 2000 cơ sở dữ liệu trong SQL Máy chủ 2012). Vì vậy, tôi hiểu rằng tôi nên làm theo hướng dẫn của bạn: sao lưu nó vào năm 2008 R2 và khôi phục vào năm 2012, sau đó thực hiện các mẹo còn lại của bạn, phải không?
Vâng làm ơn. Như tôi đã nói, khôi phục sao lưu là phương pháp ưa thích , trừ khi bạn có lý do chính đáng để không làm điều đó.
Vui lòng giải thích cho tôi phương thức sao lưu / khôi phục: Nó giống như một bãi chứa cơ sở dữ liệu cho các truy vấn SQL và sau đó khôi phục nó bằng cách thực hiện một loạt các truy vấn? Liệu phương pháp này có bằng cách "chống phân mảnh" cơ sở dữ liệu của tôi không? Nếu không, làm thế nào để chống phân mảnh / tối ưu hóa nó bằng tay?
Sao lưu / khôi phục là ... tương tự như kết xuất và tải được sử dụng trong Sybase, Oracle hoặc có lẽ là MySQL. SQL Server chỉ gọi nó là .. sao lưu / khôi phục.
Phải đọc: Tìm hiểu về sao lưu máy chủ SQL của Paul Randall.
Cú pháp đơn giản (đối với cú pháp đầy đủ tham khảo BOL ):
backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10
Sau đó khôi phục có thể được thực hiện trên máy chủ đích như:
- giả sử bố trí đĩa của đích không khớp với máy chủ nguồn
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
- giả sử bố trí đĩa của đích phù hợp với máy chủ nguồn
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10
Liệu phương pháp này có bằng cách "chống phân mảnh" cơ sở dữ liệu của tôi không? Nếu không, làm thế nào để chống phân mảnh / tối ưu hóa nó bằng tay?
sao lưu / khôi phục sẽ không chống phân mảnh cơ sở dữ liệu của bạn. Bạn phải sử dụng Alter Index Sắp xếp lại hoặc Tái tạo tùy thuộc vào mức độ phân mảnh của bạn.
Vì bạn chưa quen với SQL Server, tôi rất khuyên bạn nên sử dụng Ola Hallengren's:
Vì chúng tôi đã sử dụng SQL Server 2000 Express trong nhiều năm (không có giao diện quản lý), chúng tôi đã thực hiện sao lưu chỉ bằng cách dừng công cụ và RAR thư mục DATA. Hiện tại, như chúng ta đang ở trên SQL Server 2008, điều này vẫn tốt hơn so với việc sử dụng chức năng sao lưu trong Management Studio?
Dừng động cơ là điều tồi tệ hơn mà bạn có thể làm để sao lưu !!
Đọc liên kết của Paul về các bản sao lưu mà tôi đã đề cập và sử dụng tập lệnh của Ola. Microsoft có một bài viết KB với tập lệnh để thực hiện sao lưu tự động - Cách lên lịch và tự động sao lưu cơ sở dữ liệu SQL Server trong SQL Server Express
Chế độ khôi phục hoàn toàn với các bản sao lưu nhật ký giao dịch thường xuyên - Nhật ký giao dịch được lưu trữ ở đâu - đó có phải là tệp LDF không? Làm thế nào để tôi sao lưu nó đúng cách?
Mỗi cơ sở dữ liệu SQL Server đều có nhật ký ghi lại tất cả các giao dịch và sửa đổi cơ sở dữ liệu được thực hiện bởi mỗi giao dịch. Nhật ký giao dịch là một thành phần quan trọng của bất kỳ cơ sở dữ liệu nào.
Phần mở rộng quy ước đặt tên thông thường cho Nhật ký giao dịch là '.LDF', nhưng nó có thể là bất kỳ.
Tôi sẽ không viết thêm về điều này vì điều này sẽ làm cho câu trả lời rất hay. Tham khảo
Quản lý nhật ký giao dịch và câu trả lời của tôi ở đây cũng có liên kết tuyệt vời.
EDIT: 24/8/2016 .. Điều này sẽ giúp độc giả tương lai:
Nếu bạn đang di chuyển toàn bộ phiên bản của mình từ phiên bản này sang phiên bản khác, tôi khuyên bạn nên sử dụng giải pháp dựa trên PowerShellStart-SqlMigration