Как изменить SQL Server 2005 на регистр? - PullRequest
7 голосов
/ 26 сентября 2008

Я ненавижу чувствительность к регистру в базах данных, но я разрабатываю для клиента, который его использует. Как я могу включить эту опцию на моем SQL Server, чтобы быть уверенным, что я правильно понял дело во всех моих запросах?

Ответы [ 4 ]

14 голосов
/ 26 сентября 2008

На самом деле вам не нужно изменять параметры сортировки для всей базы данных, если вы объявляете ее для таблицы или столбцов, которые должны учитывать регистр. Фактически вы можете добавить его к отдельным операциям по мере необходимости.

SELECT name WHERE 'greg' = name COLLATE Latin1_GENERAL_CS_AS

Я знаю, вы сказали, что хотите, чтобы это применялось ко всей базе данных. Но я упоминаю об этом, потому что в определенных размещенных средах вы не можете управлять этим свойством, которое устанавливается при создании базы данных.

9 голосов
/ 26 сентября 2008

Как насчет:

ALTER DATABASE database_name COLLATE collation_name

См. BOL для списка параметров сортировки и выберите регистрозависимый вариант, который наилучшим образом соответствует вашим потребностям (т. Е. Тот, который использует ваш клиент).
Очевидно, что это хорошая идея, чтобы сделать полную резервную копию вашей базы данных, прежде чем пытаться это сделать. Лично я никогда не пытался использовать базу данных с сопоставлением, отличным от сопоставления по умолчанию для сервера, поэтому я не знаю ни одной "ошибки". Но если у вас есть хорошие резервные копии и вы тестируете их в своей среде, прежде чем развертывать их на своем клиенте, я не могу себе представить, что существует большой риск.

1 голос
/ 14 ноября 2008

Если у вас есть БД, в которой сопоставление отличается от значения по умолчанию для экземпляра, вы можете столкнуться с проблемами при попытке объединить ваши таблицы с временными. Временные таблицы должны сопоставлять экземпляр (потому что это системные объекты), поэтому вам нужно использовать в своих объединениях предложение COLLATE database_default .

select temp.A, table.B
from #TEMPORARY_TABLE temp inner join table
on temp.X COLLATE database_default = table.Y

Это заставляет параметры сортировки temp.X (в этом примере) сопоставлять текущую базу данных.

0 голосов
/ 26 сентября 2008

Вам придется изменить параметры сортировки базы данных. Вам также необходимо изменить параметры сортировки на уровне таблицы и столбца. Я полагаю, что вы можете найти скрипт там, если вы гуглите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...