COLLATION SQL Server по имени таблицы

Для базы данных SQL Server с набором параметров сортировки «Latin1_General_100_CS_AS» я хочу выполнить запрос, например:

SELECT * FROM tableName, имя таблицы в базе данных называется TableName.

SELECT * FROM TableName работает нормально

SELECT * FROM tableName выдает ошибку:

Сообщение 208, уровень 16, состояние 1, строка 1 Недопустимое имя объекта

Как сделать запрос нечувствительным к регистру?


person John Zuijderwijk    schedule 06.05.2010    source источник
comment
есть ли причина, по которой вы используете эту конкретную сортировку? если бы вы использовали сопоставление по умолчанию для сервера sql, тогда имя таблицы не было бы чувствительно к регистру.   -  person DForck42    schedule 07.05.2010


Ответы (1)


Кажется, я припоминаю, что где-то читал, что вы не можете этого сделать.

Таблицы системной базы данных всегда чувствительны к регистру. Насколько мне известно, вы не можете отключить эту функцию, и это также не зависит от ваших собственных настроек сортировки — таблицы системного каталога обрабатываются по-другому.

Однако вы можете создать синоним:

CREATE SYNONYM tableName FOR dbo.TableName

и тогда ваш выбор снова будет работать. Конечно, нецелесообразно создавать синоним для каждого возможного случая набора текста в верхнем/нижнем регистре, но это может быть «быстрым решением» для пары самых острых проблем....

person marc_s    schedule 06.05.2010
comment
Эй, Марк, я думал, что те же таблицы, где регистр чувствителен между [], но это вопрос докажите, что я ошибаюсь. Может быть, с 7-летним опытом вы сможете пролить свет на это. - person Juan Carlos Oropeza; 14.11.2017