Я просто установил SQL Server 2008 и импортировал AdventureWorksDatabase (для SQL 2005, что касается 2008, который не сделал работавший).
Это теперь осуществляет чувствительность к регистру, когда я искал любые таблицы, представления и т.д. таблица Hence Person.contact когда записанные броски ошибка Недопустимого имени столбца, но когда Человек. Контакт записан, он показывает все строки.
Плюс intellisense также не работает отлично.
Чувствительность к регистру контролируется колляцией, которую использует база данных - проверьте это, запросив представления системного каталога:
select name, collation_name
from sys.databases
Имя колляции будет выглядеть примерно так: Latin1_General_CI_AS
Часть _CI_
говорит мне, что это регистронезависимая система счисления. Если вы видите _CS_
, то это регистрозависимая система счисления.
Вы можете изменить стандартную раскладку базы данных, используя:
ALTER DATABASE AdventureWorks COLLATE .......
и выбрать здесь любую допустимую раскладку - используйте одну из них с _CI_
, чтобы получить раскладку без учета регистра.
Проблема в том, что даже если вы измените collation на уровне базы данных, некоторые таблицы могут по-прежнему иметь отдельные столбцы, которые имели определенную collation, определенную при создании таблицы. Можно также изменить их все, но это будет более сложная задача. Смотрите эту статью для получения дополнительной информации и сценария для проверки и возможного изменения отдельных столбцов в ваших таблицах.
Причина, по которой intellisense может работать некорректно, заключается в том, что чувствительность к регистру объектов базы данных как таковая контролируется серверной раскладкой - которая может отличаться от любой базы данных по умолчанию.
Чтобы узнать, какова раскладка сервера, используйте:
SELECT SERVERPROPERTY('Collation')
Изменение системной раскладки сервера - довольно сложный процесс и требует использования оригинального setup.exe
, как объяснено здесь.