У меня проблемы с получением правильного выполнения этого запроса. Он работает так, как будто я хочу его для одного значения, но если я выбираю несколько значений в своем отчете, он запускает запрос только для одного из них. Я хочу, чтобы запрос возвращал несколько значений для каждого имени сервера, которое есть в моем многозначном параметре @Servers.
Я изменил значение моего параметра, указав полное имя тегов, и изменил запрос, чтобы просто сказать IN (@Servers) без конкатенации, и это работает так, как я и ожидал, поэтому проблема заключается в конкатенации строк в выражении IN - просто не уверен, как мне нужно изменить это, чтобы он работал, перечисляя каждый тег из каждый сервер в моих значениях параметров будет за бортом для пользователя, чтобы выбрать их все.
SELECT tag, time, value
FROM piarchive..piplot
WHERE tag IN(
@Servers+'_LogicalDisk(C:)_% Free Space',
@Servers+'_LogicalDisk(E:)_% Free Space',
@Servers+'_Memory_Available Mbytes',
@Servers+'_Memory_Pages/sec',
@Servers+'_Paging File(_Total)_% Usage',
@Servers+'_Processor(_Total)_% Processor Time',
@Servers+'_Ping'
)
AND intervalcount = 100
AND time BETWEEN FORMAT(CAST(@StartTime AS datetime), 'dd-MMM-yy HH:mm:ss') AND FORMAT(CAST(@EndTime AS datetime), 'dd-MMM-yy HH:mm:ss')
ORDER BY time
РЕДАКТИРОВАТЬ, чтобы добавить рабочее решение, которое я нашел, в дополнение к приведенному ниже:
SELECT tag, time, value
FROM piarchive..piplot
WHERE LEFT(tag,12) IN(@Servers)
AND (tag like '%LogicalDisk(C:)_% Free Space'
OR tag like '%LogicalDisk(E:)_% Free Space'
OR tag like '%Memory_Available Mbytes'
OR tag like '%Memory_Pages/sec'
OR tag like '%Paging File(_Total)_% Usage'
OR tag like '%Processor(_Total)_% Processor Time'
OR tag like '%Ping'
)
AND intervalcount = 100
AND time BETWEEN FORMAT(CAST(@StartTime AS datetime), 'dd-MMM-yy HH:mm:ss') AND FORMAT(CAST(@EndTime AS datetime), 'dd-MMM-yy HH:mm:ss')
ORDER BY time