Интеграция JDBC в SQL Server - сбой запроса из-за имени столбца

В настоящее время я работаю над извлечением некоторых данных из базы данных SQL Server в ServiceNow через JDBC. У меня проблема в том, что запрос возвращает нулевые значения для некоторых столбцов.

Запрос, который я запускаю из SNOW:

select [Capacity (Bytes)] 
from memory_table 

который возвращает нулевые значения для столбца Capacity (Bytes), В базе данных SQL Server таблица была создана с именем столбца как Capacity (Bytes) с пробелом и круглыми скобками в нем, и я думаю, именно поэтому он возвращается нулевым.

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

Любая помощь будет оценена.

1 ответ

Я подозреваю, что вы столкнулись с проблемой, когда вы запрашиваете отображаемое имя, а не имя столбца, проверьте свой запрос через драйвер ServiceNow ODBC и инструменты для отладки. http://wiki.servicenow.com/index.php?title=Using_Interactive_SQL_With_ODBC

Я подозреваю, что ваш запрос вернет ошибку, так как это, вероятно, отображаемое имя. Например, если вы запросите [Группа назначений] вместо assignment_group, вы получите ошибку.

select number, short_description, [Assignment group] from incident where number = 'INC0012345';

Результат

The following error information describes the failure
ODBC Call     = SQLPrepareW()
SQL State     = 42S22
Native error  = 10125(278D)
Error Message = [SN][ODBC ServiceNow driver][OpenAccess SDK SQL Engine]Column:Assignment group not found.

Переключение на имя столбца будет работать

select number, short_description, assignment_group from incident where number = 'INC0012345';

Результат

NUMBER  short_description       assignment_group

INC0012345      My incident short descrtiption     123b1c123f12f1234567e123b1234abc
Другие вопросы по тегам