我有一个数据库,其中包含在服务器上使用物理端口的次数。每个服务器最多有48个通信通道,可根据需要进行分配。
当交易发生时,会存储一条记录,显示端口#,活动开始时以及结束时。
我需要的是在任何给定时间找出系统中每个服务器使用了多少个端口。 (我需要这个来计划扩展。)
我最初的解决方案是运行查询,收集数据,将其保存到HD,然后运行脚本来计算端口使用情况,并将其导入Excel以绘制结果图。
我想知道是否有办法在SQL中进行整个计算,因此我可以设置Excel来运行查询并自动更新。
我想在SQL中执行此操作的另一个原因是我尝试导入的数据量上的Excel barfs。所以运行VB脚本也不实用。我需要在数据进入Excel之前将其削减。
答案 0 :(得分: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是一个以您在问题中提到的结构为模型的表,但在第二个示例中,我添加了一个列,指示活动所在的服务器。这两个例子都假设一个端口只能激活一次&#39;在特定的时间单位。我不是网络人,所以如果不是这样,那么查询将不得不稍加修改。