Ссылка на связанный сервер Недопустимое имя столбца

В SSMS 2012 я создал связанный сервер в SERVERA to SERVERB, с которого я успешно написал запросы к нескольким таблицам в базе данных DBB, используя ссылку из четырех частей.

Когда я пытаюсь сослаться на таблицу «Заряд» в базе данных «DBB» с помощью простого оператора выбора:

SELECT * FROM [SERVERB].[DBB].dbo.Charge

Я получаю следующее сообщение:

Сообщение 207, уровень 16, состояние 1, строка 1. Недопустимое имя столбца «charge_type».

Этот столбец существует в базе данных DBB как «Charge_Type», однако сопоставление SERVERB нечувствительно к регистру, тогда как сопоставление SERVERA чувствительно к регистру (в этом, как мне кажется, и заключается моя проблема).

У кого-нибудь есть опыт решения этой проблемы?


person Will_C    schedule 09.09.2015    source источник
comment
Интересный. Можете ли вы выбрать один столбец, а не *? Любые вычисляемые столбцы в этой таблице? Это таблица, а не вид, верно?   -  person Blorgbeard    schedule 10.09.2015
comment
stackoverflow.com/a/496840/1821329   -  person FutbolFan    schedule 10.09.2015
comment
@Blorgbeard Даже если я укажу отдельный столбец, я все равно получу то же сообщение. Это таблица, и я не верю, что в ней есть вычисляемые столбцы.   -  person Will_C    schedule 10.09.2015
comment
Я должен упомянуть, что SERVERA — это 2012, а SERVERB — 2008 R2, а столбец Charge_Type — это тип данных tinyint.   -  person Will_C    schedule 10.09.2015
comment
@FutbolFan Спасибо за ответ. Я отчасти понимаю проблему сопоставления. Есть ли способ решить эту проблему?   -  person Will_C    schedule 10.09.2015
comment
@Will_C Лично мне раньше не приходилось сталкиваться с такой ситуацией. Прошу прощения, но я думал, что ссылка немного поможет. Хотя я бы попробовал изменить параметры сортировки на SERVERA и посмотреть, работает ли это.   -  person FutbolFan    schedule 10.09.2015
comment
Я смог обойти это, создав представление на SERVERB, которое исключило Charge_Type, и запросив представление, но на самом деле это было просто пластырем. Если кто-то может помочь с этим, я все еще хотел бы понять это.   -  person Will_C    schedule 14.09.2015


Ответы (1)


(Для тех, кто может оказаться здесь)

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

SELECT * FROM [SERVERB].[DBB].dbo.Charge

напишите такой запрос:

SELECT Charge_Col1, Charge_Col2, Charge_Type COLLATE Latin1_General_CI_AS FROM [SERVERB].[DBB].dbo.Charge

Есть еще одно сообщение, похожее на это: как мы можем выбрать два столбца с другим сопоставлением

person Goldfish    schedule 30.03.2017