2014-09-12 89 views
0

我有一个数据库,它具有在服务器上使用物理端口的次数。每台服务器拥有多达48个通讯通道,可根据需要进行分配。这可以在SQL中完成吗?计算使用的最大端口数

当事务发生时,会存储一条记录,显示端口#,活动何时开始以及何时结束。

我需要的是在任何给定时间查找系统中每台服务器使用了多少个端口。 (我需要这个扩展计划。)

我打算说我是最好的SQL Hack。我不太“Grok”SQL。所以请假设你必须向我解释,就好像我不懂SQL一样。 (因为我没有。) 我最初的解决方案是运行查询,收集数据,将其保存到HD中,然后运行脚本来计算端口使用情况,并将其导入到Excel中以绘制结果图。

我想知道是否有办法在SQL中完成整个计算,因此我可以设置Excel来自动运行查询和更新。

为什么我想在SQL中这样做的另一个原因是我试图导入的数据量的Excel barfs。所以运行VB脚本也是不现实的。我需要在输入Excel之前削减数据。

+0

'对于系统中的每台服务器'表中是否有任何内容表明活动记录在哪个服务器上? – Kik 2014-09-12 20:35:50

回答

0

如果我理解正确的问题,这样的事情应该工作:

select count(al.portNumber) as activePortCount 
from @ActivityLog al 
where al.startTime <= @queryTime and al.endTime > @queryTime 

你提到需要得到这个计数系统中的每个服务器。如果你有以某种方式指定的服务器一列,这样的事情会做的是:

select count(al.portNumber) as activePortCount, al.serverId 
from @ActivityLog al 
where al.startTime <= @queryTime and al.endTime > @queryTime 
group by al.serverId 

在这两个例子@queryTime是你正在试图确定活动端口计数的时间。 ActivityLog是建立在问题中提到的结构之后的表格,但在第二个示例中,我添加了一个指示该活动在哪个服务器上的列。这两个例子都假定一个端口只能在特定的时间单位“活跃”一次。我不是网络人,所以如果情况并非如此,查询将不得不稍微修改。

+0

对不起,我一直没有在这里。即使我需要我可以在这里获得的信息,也不用花时间打工。 – NoMoreZealots 2014-10-24 15:36:57

+0

我需要随着时间的推移使用的端口数量。所以看起来你的查询只是给我一个“快照?”它是否正确? 即我需要在10,10:05,10:10,10:15等使用的端口等。 – NoMoreZealots 2014-10-24 15:38:55