Означает ли сортировка sqlserver имена столбцов в правильном регистре? И как с этим бороться - PullRequest
3 голосов
/ 30 января 2009

В SQL Server (2000 или 2005) можно ли настроить сопоставление базы данных или сервера таким образом, чтобы имена идентификаторов (таблицы, столбцы и т. Д.) Были в правильном регистре? Если да, верно ли это для всех чувствительных к регистру сопоставлений или это отдельная настройка? (Я всегда думал о чувствительности к регистру применительно к данным, а не к именам объектов).

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

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

Ответы [ 4 ]

2 голосов
/ 30 января 2009

Сортировка - это то, что определяет, будут ли ваши запросы нечувствительными к регистру. Таким образом, единственный способ гарантировать, что ваша схема будет работать в нескольких средах, - это чтобы ваши запросы были чувствительны к регистру. Если ваши запросы не соответствуют друг другу, то ваше сопоставление ДОЛЖНО быть нечувствительным к регистру, иначе оно не будет работать.

http://msdn.microsoft.com/en-us/library/aa174903(SQL.80).aspx

Следует отметить, что после настройки среды SQL Server с определенным сопоставлением вы НЕ МОЖЕТЕ изменить его, не создав НОВЫЙ экземпляр SQL Server. Так что нечувствительный к регистру типичный путь. А затем постарайтесь обеспечить согласованность ваших запросов.

Я полагаю, что после установки параметров сортировки они применяются как к данным, так и к метаданным.

1 голос
/ 30 января 2009

Параметры сортировки по умолчанию для базы данных определяют, будут ли объекты в базе данных обрабатываться в запросах с учетом регистра - это относится ко всем именам объектов: таблицам, столбцам и т. Д.

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

Помните, что даже если ваш код выполняется, отдельные столбцы могут быть установлены с параметрами сортировки, которые отличаются от базы данных, поэтому всегда возможно, что с другим набором параметров ваш код будет работать неожиданно (например, GROUP BY ведет себя по-другому).

1 голос
/ 30 января 2009

Параметры сортировки установлены в более ранних версиях SQL Server, но в 2005 году и более поздних версиях его можно изменять по объектам по мере их создания.

0 голосов
/ 30 января 2009

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

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

Параметры сортировки также применяются к данным, поэтому "bob"! = "Bob"

...