2014-09-12 90 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