Дублирующее имя столбца ... но только если база данных нечувствительна к регистру - PullRequest
2 голосов
/ 30 июня 2011

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

Я получаю ошибку:

Повторяющиеся имена столбцов не допускаются в наборах результатов, полученных с помощью OPENQUERY и OPENROWSET. Название столбца «ExtPrice» является дубликатом.

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

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

Заранее извиняюсь, если это глупый вопрос.

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

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

И именно поэтому я всегда недоволен тем, что параметры сортировки чувствительны к регистру на уровне сервера напрямую (вместо того, чтобы просто использовать параметры сортировки на уровне столбцов), как я указал здесь: http://www.sqlmag.com/blog/practical-sql-server-45/tsql/Collation-SQL-Server-139576

Только, пытаясь обернуть мой мозг вокруг того, как вы вписали бы предложение COLLATE в распределенный запрос, я решил, что должен быть лучший способ.

И, похоже, вы можете установить некоторые конкретные параметры как часть определения вашего связанного сервера: http://msdn.microsoft.com/en-us/library/ms191145.aspx Как это определяет, как указать параметры сортировки при работе с сопоставлениями в распределенных запросах.

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

Попробуйте также эту ссылку - так как она предоставляет подробную информацию о том, как управлять настройками сортировки на связанном сервере: http://msdn.microsoft.com/en-us/library/ms186839.aspx

И, конечно, я бы рекомендовал изменить имя столбца, если это вообще возможно.

- Mike

1 голос
/ 30 июня 2011

Ваши имена столбцов должны быть изменены. Если столбец ENTRYDATE является текстовым, а EntryDate является типом данных Date, измените ENTRYDATE на ENTRYDATE_TEXT. Или измените EntryDate на EntryDate_Improved. Даже если бы вы могли порадоваться представлению связанного сервера, будущие разработчики, работающие с этим, теряют время и, возможно, вносят ошибки, потому что это очень неясно.

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