Экспорт всех данных ( в том числе логины, связанные серверы, рабочие места SQL Agent, настройки DB Mail, и т.д.), и восстановление данных уровня экземпляра, а также перегрузка всех пользовательских данных, является много работы. И даже после всего этого, по-прежнему нет гарантии, что вы можете обновить параметры сортировки базы данных по умолчанию, ALTER DATABASE
поскольку существует несколько условий, которые не позволяют завершить операцию (см. Раздел «Изменение параметров сортировки базы данных» в ALTER DATABASE
документации ). ,
Существует, однако, недокументированный метод, который намного проще. Основным недостатком является то, что он не поддерживается. Это не означает, что что-то пойдет не так, просто если что-то случится, Microsoft не поможет исправить это (потому что они никогда не гарантировали, что это будет работать).
Метод, о котором я говорю, работает sqlservr.exe
с -q {new_collation_name}
коммутатором. Это немного больше, чем это, но это основная идея. Этот метод просто обновляет системные метаданные, которые имеют преимущества и последствия, основными из которых являются:
ВЫГОДЫ
- достаточно быстро
- обойти большинство ограничений, которые мешают
ALTER DATABASE
работать
- вероятно, гораздо более точный, чем любой сценарий, который люди придумали за эти годы, чтобы отбрасывать и воссоздавать объекты
НЕДОСТАТКИ
- не поддерживается, если что-то идет не так
VARCHAR
данные могут измениться, ЕСЛИ кодовая страница отличается между старым и новым параметрами сортировки, и символы со значениями 128 - 255 (0x80 - 0xFF) существуют, и эти символы не существуют как один и тот же символ с тем же значением в новом коде стр. Таким образом, существует вероятность потери данных, и ваши данные должны быть в первую очередь исследованы, чтобы убедиться, что это условие не существует. Но это также означает, что существует множество случаев, когда только символы имеют значения от 0 до 127, которые не представляют опасности, даже если кодовая страница изменяется.
- Пользовательские типы таблиц (UDTT) пропускаются и должны обновляться вручную.
Подробное описание того, что sqlservr.exe -q
метод делает и чего не делает (включая подробности о том, как сортировки работают на разных уровнях и возможные проблемы, на которые следует обратить внимание), смотрите в моем посте:
Изменение параметров сортировки экземпляра, баз данных и всех столбцов во всех пользовательских базах данных: что может быть неправильным?
Чтобы изменить только экземпляр ( в том числе баз данных системы: master
, model
, msdb
, и tempdb
) и один или несколько баз данных (но не все базы данных), просто отсоединение базы данных (ы) , которые вы хотите исключить из этой операции, а затем повторно приложить их как только обновление сортировки завершится.