Чувствительные к регистру переменные в SQL Server - PullRequest
10 голосов
/ 02 июля 2011

У меня есть SQL Server с несколькими базами данных. Я хочу, чтобы одна из этих баз данных чувствительна к регистру имен переменных, а другие - нет.

Мне нужно изменить настройки, чтобы я мог запустить этот скрипт без ошибок

DECLARE @A int
DECLARE @a int

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

1 Ответ

14 голосов
/ 03 июля 2011

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


Параметры сортировки по умолчанию для установки SQL Server SQL_Latin1_General_CP1_CI_AS не чувствительны к регистру.

Похоже, вы хотите изменитьсопоставление вашего сервера с регистронезависимым.Выберите один с _CS._CI означает « без учета регистра », а с учетом регистра - _CS.Может быть, вам захочется Latin1_General_CS_AS.

Это отличный ответ на предыдущий вопрос о Изменение сопоставления SQL Server с учетом регистра без учета регистра? .

С Электронная документация по SQL Server :

COLLATE (Transact-SQL)

Сортировка идентификатора зависит от уровня, на которомоно определено.

  • Идентификаторам объектов уровня экземпляра, таким как имена входа и имена баз данных, назначается сопоставление по умолчанию для экземпляра.
  • Идентификаторам объектов в базе данных, таким как таблицы, представления и имена столбцов, назначается сопоставление по умолчанию для базы данных.

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

  • Идентификаторы для переменных , GOTO метки , временныехранимые процедуры и временные таблицы находятся в сопоставлении по умолчанию экземпляра сервера.

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

Вы можете проверить параметры server , используя:

SELECT SERVERPROPERTY('collation');

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