Интеграция 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