Оновіть базу даних SQL Server 2000 до 2008 R2 та включіть нові функції


23

Нещодавно я оновив базу даних SQL Server 2000 до 2008 року R2.


Що я зробив:

  1. Служба вимкнення SQL Server 2000 (експрес) на старій машині,
  2. Перемістити файли даних ( mydatabase.mdf та mydatabase.ldf ) на нову машину,
  3. Запустіть SQL Server Management Studio 2008,
  4. Підключіться до локальної бази даних,
  5. Приєднайте файли даних до бази даних.
  6. Змініть рівень сумісності бази даних на SQL 2008 (100).

Питання: Що ще потрібно зробити, щоб міграція завершилася?

Я хочу:

  1. використовувати нові функції, такі як контрольна сума та модель повного відновлення,
  2. зробити цю базу такою, якою вона була створена в SQL 2008 R2,
  3. зробіть цю базу даних повністю сумісною, правильною та ідеально підходить для нового двигуна баз даних SQL 2008 R2.

Іншими словами: я просто хочу знати, як правильно і повністю перетворити стару базу даних SQL 2000 в нову базу даних R2 2008, будьте спокійні, що все зроблено правильно, і будьте задоволені всіма новими можливостями.


Я задаю це запитання, тому що я знайшов дуже багато сайтів в Інтернеті, на яких написано так багато різних речей, що мене збивають з пантелику: одні кажуть, що потрібно перебудовувати індекси, інші кажуть робити інші речі ... тепер я нічого не знаю, тому хочу почути думку досвідченої людини та чіткі покрокові інструкції. Я працюю в дуже маленькій компанії, я сам по собі і не хочу щось накручувати.


Сер, я дуже вражений вашою відповіддю, я не дуже очікував.


Тож кілька коментарів:

  1. Зараз база даних виробляється. Як я вже говорив, його було оновлено за допомогою методу deattach-attach, коли я описувався в першій публікації та як описано в MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Це потрібно було зробити швидко, тому я був змушений зробити це саме так. Давайте забудемо про те, наскільки це було недоречно, і зосередимось на поточній ситуації.

  2. Користувачі / дозвіл тут не є проблемою - їх лише декілька, і дозволи є простими.

  3. Додаток, який використовує базу даних, сумісний із SQL 2000 до 2012 року, тому це теж не є проблемою.

  4. Файл бази даних (MDF) не великий - лише близько 1 ГБ.


Ще кілька питань:

  1. Ви рекомендуєте використовувати метод резервного копіювання / відновлення, але я зробив, як написано вище, тож чи можу я зіткнутися з будь-якими проблемами зараз? Все працювало без жодних проблем.

  2. Про контрольну суму та повну модель відновлення: вона не була доступна / включена в SQL 2000, тому я хочу їх зараз використовувати. Ви сказали, що єдине, що мені потрібно зробити, це включити ці параметри у властивостях бази даних? Я десь читав, що цього недостатньо, і я також повинен будувати індекси чи щось таке. Я насправді не знаю, я просто прошу.

  3. Я готуюсь перенести цю базу даних до SQL 2012 - тож спочатку це було від SQL 2000 до 2008 R2, тепер це буде з 2008 R2 по 2012 (це було неможливо зробити безпосередньо через відсутність підтримки баз даних SQL 2000 у SQL 2012). Тож я розумію, що я повинен слідувати вашому посібнику: створити резервну копію у 2008 R2 та відновити у 2012 році, а потім виконати решту ваших порад, правда?

  4. Поясніть, будь ласка, метод резервного копіювання / відновлення: це схоже на скидання бази даних до SQL-запитів, а потім відновлення, виконавши купу запитів? Чи допоможе цей метод шляхом дефрагментації моєї бази даних? Якщо ні, як дефрагментацію / оптимізацію вручну?

  5. Оскільки ми використовували SQL 2000 Express протягом багатьох років (без інтерфейсу управління), ми робили резервні копії, просто зупиняючи двигун і RAR каталог DATA. Наразі, як ми працюємо на SQL 2008, хіба це ще не краще, ніж використання функції резервного копіювання в Management Studio?

  6. Повний режим відновлення з частими резервними копіями журналу транзакцій - Де зберігається журнал транзакцій - це файл LDF? Як я можу зробити це резервним копієм належним чином?


Я знаю, що мої запитання можуть звучати нерозумно, я не професійний адміністратор баз даних, але я єдина людина, яка може виконати таке "важке ядро", як оновлення двигуна бази даних. Я також впевнений, що ваш знаний досвід дуже допоможе таким людям, як я.

Дуже дякую за ваш час та знання, я дуже ціную це.


2
Наступного разу настійно рекомендую створити резервну копію / відновлення замість вимкнення SQL Server, переміщення файлів та вкладення їх. Просто так багато речей, що можуть піти не так. З іншого боку, вітаю з нарешті 14-річним програмним забезпеченням баз даних!
Аарон Бертран

Відповіді:


37

Всього крок потрібно зробити , це запустити Upgrade Advisor на базі SQL Server 2000 і розглянути всі питання , повідомив їм.

Як найкраща практика, використовуйте інструмент Upgrade Advisor у застарілій базі даних SQL Server 2000 та імпортуйте файл трасування в інструмент Upgrade Advisor для аналізу. Файл трасування дозволяє Пораднику з оновлення виявити проблеми, які можуть не відображатися при простому скануванні бази даних, наприклад, TSQL, вбудованому в програми. Ви можете фіксувати сліди TSQL за допомогою SQL Profiler на своєму сервері SQL Server 2000 протягом типових годин та аналізувати ці сліди за допомогою Advisor Upgrade Advisor.

Тож решта кроків:

У день міграції:

  1. скриптуйте наші входи на сервер 2000 за допомогою sp_help_revlogin .
  2. Сценарій завдань і пов'язаних серверів з сервера sql 2000.
  3. припинити підключення веб-серверів до сервера 2000. Переконайтесь, що жоден додаток не підключається до сервера 2000.
  4. створіть резервні копії баз даних та відновіть на сервері призначення sql 2008 R2. (зверніть увагу: не від'єднуйте / приєднуйте, оскільки все може піти не так, і ви отримаєте окрему базу даних та не створюйте резервних копій!)
  5. Після відновлення резервних копій на сервері 2008 R2, запустіть висновок із sp_help_revlogin на сервері R2 2008 R2, щоб відновити входи в систему.
  6. Синхронізуйте сирітських користувачів (якщо такі є) та відтворіть завдання агента sql та пов'язані сервери на новому сервері.
  7. змінити рівень сумісності відновлених баз даних на 100.
  8. Dbcc checkdb із увімкненими параметрами all_errormsgs та data_purance: DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
  9. запустіть DBCC UPDATEUSAGE на відновлених базах даних DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
  10. Оновіть статистику для всіх таблиць при повному скануванні: Update Statistics table_name with FULLSCAN
  11. Необов’язково: Перевірте рівні фрагментації та, залежно від рівня фрагментації, запустіть реорганізацію / перебудову всіх індексів. Ви можете використовувати сценарії Ola .
  12. Перекомпілюйте всі використовувані SP sp_recompile 'procedureName'
  13. Оновіть свої погляди SP_REFRESHVIEW view_name
  14. переконайтеся, що ви зміните параметр бази даних: сторінку підтвердити на CHECKSUM.
  15. Змініть модель відновлення (якщо вона відрізняється від sql 2000) на FULL. Якщо ви перейдете на ПОЛУНУЮ модель відновлення, ПЕРЕКОНАЙТЕ, що ви часто робите резервні копії журналу транзакцій. Це допоможе вам відновити момент часу, а також не розмивати свій T-Log.
  16. У SQL Server 2005 і новіших версіях була введена база даних Mail . Тож вам доведеться перейти з SQLMail до пошти баз даних.

    USE [master]
    GO
    sp_configure 'show advanced options',1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    sp_configure 'Database Mail XPs',1
    GO
    RECONFIGURE 
    GO

Крім того, якщо у вас є реплікація, вам доведеться її скинути. Якщо будь-яка ДР, наприклад логшинг або Дзеркальне відображення (нова в 2005 році і вище, але знецінилася в 2012 році), вам доведеться скинути її також.

Старі пакети DTS потрібно перенести на SSIS за допомогою C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe(командного рядка) або за допомогою майстра міграції пакетів .

Також ви можете використовувати мій сценарій, знайдений на веб- сайті /dba//a/36701/8783 . Хоча він використовує метод від'єднання / прикріплення, я настійно рекомендую використовувати метод BACKUP / RESTORE . Змініть сценарій відповідно.


Як бічна примітка:

  • увімкніть миттєву ініціалізацію файлів на новому сервері.
  • Майте кілька файлів даних tempdb однакового розміру.
  • Увімкнути прапор трасування 1118
  • Налаштуйте максимум та мінімум пам’яті правильно. Особливо Макс пам'яті далеко за замовчуванням.
  • Правильно відрегулюйте настройки MAXDOP. Детальнішу інформацію див. На /dba//a/36578/8783 .
  • Найкраще встановити sp_Blitz від Brent Ozar. Запустіть його та вирішіть важливі та пріоритетні проблеми, про які повідомляє він.
  • Ви навіть можете використовувати SQL Power Doc від кендальвандике - 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, щоб уникнути сюрпризів під час фактичної міграції.

----------

Ще кілька питань:

Ви рекомендуєте використовувати метод резервного копіювання / відновлення, але я зробив, як написано вище, тож чи можу я зіткнутися з будь-якими проблемами зараз? Все працювало без жодних проблем.

Якщо все спрацювало нормально, і ви змогли долучити базу даних, то НІ у вас не виникне жодних проблем. Detach / Attach vs резервне копіювання / відновлення - це лише метод того, як ви переміщуєте свою базу даних в інше місце. Просто 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 рік (це було неможливо зробити безпосередньо через відсутність підтримки 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:

Оскільки ми використовували SQL Server 2000 Express протягом багатьох років (без інтерфейсу управління), ми робили резервні копії просто, зупиняючи двигун та RAR каталог DATA. Наразі, як ми працюємо на SQL Server 2008, хіба це ще не краще, ніж використання функції резервного копіювання в студії управління?

Зупинка двигуна - це найгірше, що ви можете зробити для резервного копіювання !!

Прочитайте посилання Пола про резервні копії, про які я згадував, та використання сценарію Оли. Microsoft має статтю KB із сценарієм для автоматичного резервного копіювання - Як планувати та автоматизувати резервні копії баз даних SQL Server у SQL Server Express

Повний режим відновлення з частими резервними копіями журналу транзакцій - Де зберігається журнал транзакцій - це файл LDF? Як я можу зробити це резервним копієм належним чином?

Кожна база даних SQL Server має журнал, який записує всі транзакції та модифікації бази даних, що здійснюються кожною транзакцією. Журнал транзакцій є критичним компонентом будь-якої бази даних.

Звичайне розширення для імен для журналу транзакцій - ".LDF", але воно може бути будь-яким.

Я не збираюсь більше писати про це, оскільки це зробить відповідь дуже порядною. Зверніться до управління журналом транзакцій, і моя відповідь тут також має чудові посилання.


РЕДАКТ: 24.08.2016 .. Це допоможе майбутнім читачам:

Якщо ви переносите весь свій екземпляр з однієї версії на іншу, настійно рекомендую використовувати рішення на базі PowerShellStart-SqlMigration

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.