Первый шаг, который нужно сделать, - запустить помощник по обновлению базы данных SQL Server 2000 и решить все проблемы, о которых он сообщил.
Рекомендуется использовать инструмент Upgrade Advisor в устаревшей базе данных SQL Server 2000 и импортировать файл трассировки в инструмент Upgrade Advisor для анализа. Файл трассировки позволяет помощнику по обновлению обнаруживать проблемы, которые могут не отображаться при простом сканировании базы данных, например, при внедрении TSQL в приложения. Вы можете захватывать трассировки TSQL с помощью SQL Profiler на вашем сервере SQL Server 2000 в обычные часы и анализировать эти трассировки с помощью помощника по обновлению.
Таким образом, остальные шаги будут:
В день миграции:
- Сценарий наших входов в систему на сервере 2000 с помощью sp_help_revlogin .
- Сценарий работы и связанных серверов с сервера SQL 2000.
- прекратить подключение веб-серверов к серверу 2000. Убедитесь, что к серверу 2000 не подключено ни одного приложения.
- сделайте резервную копию ваших баз данных и восстановите их на целевом сервере sql 2008 R2.
- После восстановления резервных копий на сервере 2008 R2 запустите выходные данные из sp_help_revlogin на сервере 2008 R2, чтобы воссоздать имена входа.
- Синхронизируйте потерянных пользователей (если есть) и заново создайте задания агента SQL и связанные серверы на новом сервере.
- изменить уровень совместимости на восстановленных базах данных до 100.
- Dbcc checkdb с включенными опциями all_errormsgs и data_purity:
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
- Необязательно: Проверьте уровни фрагментации и, в зависимости от уровня фрагментации, запустите reorg / rebuild всех индексов. Вы можете использовать скрипты Олы .
- Перекомпилируйте все SP, используя
sp_recompile 'procedureName'
- Обновить ваши взгляды
SP_REFRESHVIEW view_name
- Обязательно измените параметр базы данных: проверьте страницу на CHECKSUM.
- Измените модель восстановления (если она отличается от SQL 2000) на ПОЛНАЯ. Если вы переключитесь на модель полного восстановления, ПОЧИТАЙТЕ, что вы часто делаете резервные копии журнала транзакций. Это поможет вам восстановить на определенный момент времени, а также не раздувать ваш T-Log.
В SQL Server 2005 и более поздних версиях была представлена Почта базы данных . Поэтому вам нужно перейти с SQLMail на 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
Кроме того, если у вас есть какие-либо репликации, вы должны сбросить его. Если какой-либо DR, например, logshipping или Mirroring (новый в 2005 году и выше, но в 2012 году устарел), то вам также необходимо сбросить его.
Старые пакеты DTS необходимо перенести в SSIS с помощью C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(командной строки) или мастера миграции пакетов .
Также вы можете использовать мой скрипт, который можно найти по адресу /dba//a/36701/8783 . Хотя он использует метод detach / attach, я настоятельно рекомендую вам использовать метод BACKUP / RESTORE . Измените сценарий соответственно.
Как примечание стороны:
- включите мгновенную инициализацию файла на новом сервере.
- Иметь несколько файлов данных tempdb с одинаковым размером.
- Включить флаг трассировки 1118
- Настройте максимальную и минимальную память правильно. Особенно Макс памяти вдали от настроек по умолчанию.
- Правильно настройте параметры MAXDOP. Обратитесь к /dba//a/36578/8783 для получения дополнительной информации.
- Лучше всего установить sp_Blitz от Brent Ozar. Запустите его и устраните критические и высокоприоритетные проблемы, о которых он сообщает.
- Вы даже можете использовать SQL Power Doc от kendalvandyke - SQL Power Doc работает со всеми версиями SQL Server от SQL Server 2000 до 2012 и всеми версиями Windows Server и операционных систем Windows для потребителя от Windows 2000 и Windows XP до Windows Server 2012 и Windows 8. Также полезно для планирования обновлений - посмотрите, какие скрытые функции используются в экземпляре.
- Включите Оптимизацию для специальных рабочих нагрузок и Параметры сжатия резервных копий по умолчанию.
Давайте ответим на ваши вопросы ...
Что еще я должен сделать, чтобы завершить миграцию?
Обратитесь к моему ответу. Это поможет вам правильно составить план миграции. Всегда проверяйте свой план миграции в UAT (непроизводственном) вместе с надлежащим тестированием приложений бизнес-пользователями.
использовать новые функции, такие как контрольная сумма и полная модель восстановления.
CHECKSUM
является новым в SQL Server 2005 и выше. Я рассмотрел это как часть шагов миграции, описанных выше.
full recovery model
не нова Это зависит от типа вашего бизнеса и определяет, сколько данных вы можете потерять в случае аварии.
Режим полного восстановления с частыми резервными копиями журналов транзакций позволит вам восстановить данные на определенный момент времени и сократить объем потерь данных.
сделать эту базу данных точно такой же, как она была создана в SQL Server 2008 R2.
сделать эту базу данных полностью совместимой, корректной и идеально подходящей для нового ядра базы данных SQL 2008 R2.
Не до конца понимаю это! Но вышеперечисленные шаги миграции помогут вам. Вам просто нужно восстановить базу данных и изменить уровень совместимости 10 100
вместе с вышеуказанными шагами.
Я просто хочу знать, как правильно и полностью преобразовать старую базу данных SQL Server 2000 в новую базу данных 2008 R2, быть спокойным, что все сделано правильно, и радоваться всем новым функциям.
Вы должны быть осторожны с этим, так как это потребует внесения изменений и в код вашего приложения. Если код вашего приложения изменен для использования новых функций в SQL Server 2008 R2, то у вас не возникнет никаких проблем - при условии, что вы полностью выполнили полное регрессионное тестирование своего приложения в среде UAT или DEV. Это даст вам максимальную уверенность, когда вы будете выполнять фактическую миграцию в PROD.
Примечание: выше приведены шаги, которые я мог запомнить, и я почти уверен, что ничего не пропущено. Если я увижу, что я что-то пропустил, то я добавлю это или других экспертов на этот сайт - не стесняйтесь добавлять!
Все, что описано выше, необходимо сначала воспроизвести в среде NON PRODUCTION, чтобы избежать неожиданностей во время фактической миграции.
----------
Еще несколько вопросов:
Вы рекомендуете использовать метод резервного копирования / восстановления, но я сделал, как написано выше, так что я могу столкнуться с какими-либо проблемами сейчас? Все работало без проблем.
Если все работало нормально, и вы смогли присоединить базу данных, то НИКАКИХ проблем не возникнет. Отсоединение / Присоединение к резервному копированию / восстановлению - это всего лишь метод перемещения вашей базы данных в другое место. Просто к вашему сведению. Резервное копирование / восстановление более надежно и надежно, так как если что-то пойдет не так (в худшем случае), то, по крайней мере, у вас есть резервная копия для восстановления и восстановления базы данных.
О контрольной сумме и модели полного восстановления: она не была доступна / включена на SQL Server 2000, поэтому я хочу использовать их сейчас. Вы сказали, что мне нужно только включить эти параметры в свойствах базы данных? Я где-то читал, что этого недостаточно, и я должен также перестроить индексы или что-то в этом роде. Я действительно не знаю, я просто спрашиваю.
Как я уже сказал, контрольная сумма является новой в версии 2005 и выше. Это механизм, с помощью которого SQL Server обнаруживает повреждение страницы, особенно из-за ввода-вывода. Обратитесь к моему ответу здесь для более подробной информации.
Чтобы включить 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 (это было невозможно сделать напрямую из-за отсутствия поддержки 2000 баз данных в SQL Сервер 2012). Итак, я понимаю, что должен следовать вашему руководству: сделайте резервную копию в 2008 R2 и восстановите в 2012, а затем сделайте остальные ваши советы, верно?
Да, пожалуйста. Как я уже сказал, резервное копирование является предпочтительным методом, если у вас нет веских причин не делать этого.
Пожалуйста, объясните мне метод резервного копирования / восстановления: это как сброс базы данных в SQL-запросы, а затем восстановление, выполнив несколько запросов? Будет ли этот метод кстати "дефрагментировать" мою базу данных? Если нет, то как его дефрагментировать / оптимизировать вручную?
Резервное копирование / восстановление ... похоже на дамп и загрузку, используемые в Sybase, Oracle или, возможно, MySQL. Это просто SQL Server называет это .. резервное копирование / восстановление.
Необходимо прочитать: Понимание резервного копирования 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 в течение многих лет (без интерфейса управления), мы делали резервные копии, просто останавливая движок и RAR каталог DATA. Пока, как мы работаем на SQL Server 2008, разве это не лучше, чем использование функции резервного копирования в Management Studio?
Остановка двигателя - худшая вещь, которую вы можете сделать для резервного копирования!
Прочитайте ссылку Пола о резервных копиях, которые я упомянул, и используйте сценарий Олы. У Microsoft есть статья в КБ со сценарием автоматического создания резервных копий - Как планировать и автоматизировать резервное копирование баз данных SQL Server в SQL Server Express
Режим полного восстановления с частыми резервными копиями журнала транзакций - где хранится журнал транзакций - это файл LDF? Как правильно сделать резервную копию?
Каждая база данных SQL Server имеет журнал, в котором записываются все транзакции и изменения базы данных, сделанные каждой транзакцией. Журнал транзакций является критическим компонентом любой базы данных.
Обычное расширение соглашения об именах для журнала транзакций - «.LDF», но оно может быть любым.
Я не собираюсь больше писать об этом, так как это сделает ответ очень скудным. Обратитесь к
Transaction Log Management и мой ответ здесь имеет отличные связи , а также.
РЕДАКТИРОВАТЬ: 24.08.2016 .. Это поможет будущим читателям:
Если вы переносите весь свой экземпляр с одной версии на другую, я настоятельно рекомендую использовать решение на основе PowerShell.Start-SqlMigration