2014-03-12 164 views
3

我怎麼會去更新與統計每15分鐘表?今天我有一個結構化的工作,用相同的統計數據更新另一個表格,但每天在8:00和17:00。儘管現在我想用類似的邏輯來每15分鐘更新一次。我的其他工作是使用SQL服務器代理每天執行兩次存儲過程。我是否應該使用相同的邏輯並在服務器代理中將更新速率更改爲每15分鐘一次?更新表中的每15分鐘

因此,這是用於主插入存儲過程中的代碼來檢查和插入數據,它基本上cehcks 17:00和8:00也不同參數中的8:00的量之間的活性。

If Convert(varchar(50),DATEPART(HH,getdate())) = '8' 
begin 
declare @datumstring as Varchar(30) 
Declare @Datum As Datetime 
set @Datum = Dateadd(dd,-1,GETDATE()) 
set @datumstring = convert(varchar, @Datum,102) 
set @datumstring = @datumstring + ' 17:00' 
set @Datum = CONVERT(datetime, @datumstring) 

然後在插入大多含有很多子查詢的,但它並不重要,但我會後他們中的一個,所以你可以看到我是如何使用日期的條件。

(select COUNT(*) from table b 
where b.ob = 4 and b.t = 7 and Time 
between @Datum and GETDATE() and b.Name = LoginName) 

我可以使用類似的邏輯隨着時間的操作使用變量,或者我應該只是做一個類似的插入表,然後更新該存儲過程每隔15分鐘?

乾杯

+0

只是爲了澄清,你想節省每15分鐘的統計數據都發生在最後15分鐘的更改(即自上次統計數據被保存)? –

+0

很好的問題,我想更新,因此沒有保存以前,這意味着該數據始終是「新鮮」 – SterlinkArcher

+0

我會使用一個或多個索引視圖或者(如果您的數據的要求不符合他們的限制)觸發器來考慮以便在對其他表應用更改時自動維護數據。當最好的更新頻率通常是「底層數據發生變化時」,爲什麼選擇更新頻率? –

回答

3

嗯,因爲我知道你需要的東西,這將有助於你在每一個15分鐘執行一些特定的代碼塊。

那麼爲什麼不嘗試從SQLSERVER WAITFOR關鍵字。把你的代碼在

WHILE (1 = 1) 
BEGIN 
    WAITFOR DELAY '00:15' 
    -- CODE TO BE EXECUTE 
END 

或者也可以使用

WHILE (1 = 1) 
BEGIN 
    WAITFOR TIME '00:15' 
    -- CODE TO BE EXECUTE 
END 
+0

aaah聰明!會嘗試這個:) – SterlinkArcher

+0

你應該。由於我使用的這個,這是非常有效的... 不過呀。如果我沒看錯的比你需要做一些技巧性的東西與這種類型的代碼。 在我的情況下,我把這種類型的SP放在MASTER數據庫中,並在sqlserver啓動時運行這個sp。 希望這有助於全給你.... –

+0

是的,它是有幫助的:),並感謝您抽出時間來回答。 – SterlinkArcher

0

,如果你想這樣做對服務器使用cron作業。或者如果你想在客戶端用戶java腳本上執行它。或AJEX的JQuery

$.ajax({ 
    url: "test.html", 
    context: document.body 
}).done(function() { 
    $(this).addClass("done"); 
}); 

看到enter link description here