Параметры в DB.QueryResult
-
Всем привет!
Попробовали оптимизировать работу с запросами и добавить параметр как описано в анонсе и документации:
https://www.netxms.org/forum/announcements/netxms-1-2-14-released/msg13923/#msg13923Но что-то не получилось в логе:
[18-Jun-2015 17:50:42.538] [DEBUG] [session:0] Received message CMD_GET_PARAMETER
[18-Jun-2015 17:50:42.538] [DEBUG] [session:0] Requesting parameter "DB.QueryResult(checksensor(1))"
[18-Jun-2015 17:50:42.538] [DEBUG] [session:0] GetParameterValue(): result is 404 (UNKNOWN_PARAMETER)
[18-Jun-2015 17:50:42.538] [DEBUG] [session:0] Sending message CMD_REQUEST_COMPLETED (size 32)
[18-Jun-2015 17:50:43.569] [DEBUG] [session:0] Message dump:
** 000300000000001000000A2D00000000
** code=0x0003 (CMD_KEEPALIVE) flags=0x0000 id=2605 size=16 numFields=0Запрос задан как:
Query = checksensor:dbname:check the status of sensor:SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM .... where ... param1
Вызывается как:
DB.QueryResult(checksensor(1))
Версия 1.2.14. Подскажите, пожалуйста, что может быть не так?
-
-
Попробуйте прописать в конфиге агента как ConfigurableQuery - должен появится новый параметр checksensor к которому можно будет обратится как checksensor(1)
-
@victor said in Параметры в DB.QueryResult:
Попробуйте прописать в конфиге агента как ConfigurableQuery - должен появится новый параметр checksensor к которому можно будет обратится как checksensor(1)
Спасибо за подсказку, изменили тип запроса на ConfigurableQuery. Теперь запрос можно вызвать как checksensor(1).
Но каким образом описать ПАРАМЕТР в самом запросе, такой вариант не сработал:
SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM .... where ... param1
Т.е. непонятно как в запросе описать сам параметр?
-
Ставить знак вопроса. Первый параметр подставится в первый знак вопроса, второй во второй, и т.д. Например:
SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM .... WHERE ... condition_column=?
-
@victor said in Параметры в DB.QueryResult:
Ставить знак вопроса. Первый параметр подставится в первый знак вопроса, второй во второй, и т.д. Например:
SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM .... WHERE ... condition_column=?
Спасибо за подсказку. Попробовали, но из наблюдений параметр не передается в запрос.
изменили запрос на:
SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM ... where ... and objid in (?) ORDER BY ...
в Data Collection вызываем его как checksensor(1)
но в журнале появляется ошибка:
[ERROR] SQL query failed (Query = "SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM ... where ... and objid in (?) ORDER BY ... "): [Microsoft][SQL Server Native Client 10.0]COUNT field incorrect or syntax error
В конфиги он создается как:
ConfigurableQuery = checksensor:testdb:test query:SELECT STUFF ( (SELECT top 5 ';' + objid + ',' + action + ',' + CONVERT(varchar(10),DATEDIFF(s,'1970-01-01', DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), date))) FROM ... where ... and objid in (?) ORDER BY ....'')
Версия: 1.2.14.
-
Я советую обновить этот агент до 2.0-M3 или выше, поскольку в 2.0-M3 были исправления в параметризованных запросах.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login