我正在开发一个grafana仪表板,它允许选择一个或多个服务器和端口组合来返回每个server+port组合的数据。
DECLARE
@StartDate DATETIME,
@EndDate DATETIME,
@ServerId SMALLINT,
SET @StartDate = DATEADD(HH,-1, @StartDate)
SET @EndDate = GETDATE()
SET @ServerId = (SELECT ServerId FROM dbo.Server
WHERE ServerName = [[ServerName]] AND ServerPort = [[ServerPort]])
EXECUTE GetGrafana @StartDate , @EndDate, @ServerId, 18 //Ignore the 18, not relevant to this question在Grafana中," [ServerName]“和"[ServerPort]”在单击不同组合so [ServerName]和[ServerPort]时动态变化。因此,实际的查询可以如下所示:
SET @ServerId = (SELECT ServerId FROM dbo.Server
WHERE ServerName = 's001','s002','s003' AND ServerPort = '1111','2222','3333','4444')如果我只选择一个"[ServerName]“和"[ServerPort]”组合,它就可以执行存储过程。但是当我尝试放置多个组合时会出错,因为ServerId不能有多个ServerName和ServerPort。我想知道如何将我的查询配置为允许我处理ServerID中的多个"[ServerName]“和"[ServerPort]”,并按ServerID调用存储过程。
发布于 2018-07-24 07:27:14
你可以这样做:
然后,在您的GetGrafana过程中,不要在=中使用where子句,而是使用一个带有IN的子句,如下所示:
where ServerName IN dbo.split_str(ServerName, ',')从Server 2016开始,您可以使用内置的裂开函数。
https://stackoverflow.com/questions/51485190
复制相似问题