.net 当没有公共字段时,是否使用SWQL(SolarWinds查询语言)连接2个以上的表?
我正在使用SolarWinds Orion NPM(网络性能监控)监控我的节点。我使用Orion SDK从SWIS(SolarWinds informarion Service)获取警报信息,并将其输入vb.net控制台应用程序 我正在使用一些vb.net代码:.net 当没有公共字段时,是否使用SWQL(SolarWinds查询语言)连接2个以上的表?,.net,vb.net,solarwinds-orion,.net,Vb.net,Solarwinds Orion,我正在使用SolarWinds Orion NPM(网络性能监控)监控我的节点。我使用Orion SDK从SWIS(SolarWinds informarion Service)获取警报信息,并将其输入vb.net控制台应用程序 我正在使用一些vb.net代码: Function GetOneAlert(ByVal swis As InformationServiceClient) As AlertInfo Dim query As String, result As XElement
Function GetOneAlert(ByVal swis As InformationServiceClient) As AlertInfo
Dim query As String, result As XElement
query = "SELECT TOP 1 A.AlertDefID, A.ActiveObject, A.ObjectType FROM Orion.AlertStatus A WHERE A.Acknowledged=0 ORDER BY A.TriggerTimeStamp DESC"
result = swis.QueryXml(query)
问题是,我想从三个名为Orion.AlertDefinitions
、Orion.AlertStatus
和Orion.Nodes
的表中获取alertinformation
(太阳林信息服务),我需要加入这三个表,但我可以加入其中的两个表(Orion.AlertDefinitions
,Orion.AlertStatus
)使用如下所示的swql
(SolarWinds查询语言)查询
query = "SELECT AlertStatus.AlertDefID, AlertDefinitions.AlertDefID, AlertDefinitions.Name, AlertStatus.State, AlertStatus.ObjectName,
AlertStatus.TriggerTimeStamp, AlertDefinitions.Description FROM Orion.AlertStatus INNER JOIN Orion.AlertDefinitions
ON AlertStatus.AlertDefID=AlertDefinitions.AlertDefID WHERE AlertStatus.Acknowledged=0"
我知道警报的详细信息,但我不知道警报属于哪个节点。为此,我需要将“orion.node”表与其余的表联接。但是第三个表(orion.Nodes
)在其他两个表中没有要联接的公共字段。
我需要从
Orion.Nodes
表中获取三个名为DNS
,IPAddress
,NodeDescription
的字段值。如果您对节点相关警报感兴趣,并且希望加入节点详细信息,那么您应该只选择具有警报状态的警报。ObjectType='node'
并使用警报状态加入us.ActiveObject
是关联节点的NodeID
。因此查询(提及节点属性)如下所示:
SELECT AlertStatus.AlertDefID, AlertDefinitions.AlertDefID, AlertDefinitions.Name, AlertStatus.State, AlertStatus.ObjectName, AlertStatus.TriggerTimeStamp, AlertDefinitions.Description, Nodes.IPAddress, Nodes.Dns, Nodes.NodeDescription
FROM Orion.AlertStatus
INNER JOIN Orion.AlertDefinitions
ON AlertStatus.AlertDefID=AlertDefinitions.AlertDefID
INNER JOIN Orion.Nodes
ON AlertStatus.ActiveObject=Nodes.NodeID
WHERE AlertStatus.Acknowledged=0 AND AlertStatus.ObjectType='Node'
无论如何,对于有关Orion SDK和SWI的更具体的问题和答案,您可能想看看。SWQL中的表之间也有自动关联,例如,下面的SWQL不使用
连接,而是使用来自多个表的调用:
SELECT E0.[Node].Caption, E0.AssignmentName, E0.CustomPollerName,
E0.DetailsUrl, E0.DisplayName, E0.NodeID, E0.Status, E0.StatusDescription,
E0.StatusIconHint, E0.StatusLED, E0.UnManaged, E0.UnManageFrom, E0.UnManageUntil, E0.Uri,
E0.[Node].Description, E0.[CustomPoller].[OID] = '1.3.6.1.2.1.1.3',
E0.[CustomPollerStatusScalar].[Status]
FROM Orion.NPM.CustomPollerAssignmentOnNode AS E0
WHERE E0.[Node].[SysObjectID] IS NOT NULL
AND E0.StatusDescription NOT LIKE 'Unmanaged'