Експорт усіх даних (включаючи входи в систему, пов’язані сервери, завдання SQL Agent, налаштування пошти DB тощо) та відновлення даних на рівні екземпляра, а також перезавантаження всіх даних користувачів - це велика робота. І навіть після цього все ще немає гарантії, що ви можете оновити зіставлення бази даних за замовчуванням через те, ALTER DATABASE
що існує кілька умов, які запобігають завершенню операції (див. Розділ "Зміна зібрання бази даних" у розділіALTER DATABASE
детальну інформацію документації ) .
Однак існує бездокументований метод, який багато простіше. Основним недоліком є те, що він не підтримується. Це не означає, що щось піде не так, лише якщо Microsoft щось не зробить, Microsoft не допоможе це виправити (адже вони ніколи не гарантували, що це буде працювати).
Метод, про який я говорю, працює sqlservr.exe
за допомогою -q {new_collation_name}
перемикача. У цьому є трохи більше, але це основна ідея. Цей метод просто оновлює системні метадані, що має переваги та наслідки, основними з яких є:
ПЕРЕВАГИ
- досить швидко
- обійти більшість обмежень, які заважають
ALTER DATABASE
працювати
- ймовірно, набагато точніший за будь-який сценарій, який люди придумували протягом багатьох років для скидання та відтворення об’єктів
КРЕСЛЕННЯ
- непідтримується, якщо щось піде не так
VARCHAR
дані можуть змінюватися, якщо кодова сторінка відрізняється між старим і новим зіставленням, і символи зі значеннями 128 - 255 (0x80 - 0xFF) існують, і ці символи не існують як один і той же символ з тим же значенням у новому коді сторінки. Тож існує потенціал для втрати даних, і ваші дані спочатку потребують дослідження, щоб переконатися, що ця умова не існує. Але це також означає, що є чимало випадків, коли лише символи мають значення 0 - 127, які не становлять ніякої небезпеки, навіть якщо кодова сторінка змінюється.
- Визначені користувачем типи таблиць (UDTT) пропускаються і потребують оновлення вручну.
Щоб отримати детальний опис того, що sqlservr.exe -q
метод робить, а що не робить (включаючи детальну інформацію про те, як працюють збірки на різних рівнях, та потенційні проблеми, на які слід спостерігати), будь ласка, дивіться мій пост:
Зміна зібрання екземпляра, баз даних та всіх стовпців у всіх базі даних користувачів: що може бути помилковим?
Щоб змінити тільки примірник ( у тому числі баз даних системи: master
, model
, msdb
, і tempdb
) і один або кілька баз даних (але не всі бази даних), просто від'єднання бази даних (и) , які ви хочете виключити з цієї операції, а потім повторно докласти їх як тільки оновлення порівняння завершиться.