sqlserver2000重複作業排程

2021-04-12 14:43:58 字數 2541 閱讀 9330

在跟發電廠做輔助決策系統時,涉及到電量結算問題。電廠方只提供實時的每分鐘的電力資料,我方要根據電力

來算出每一時段的電量(以一刻鐘為一時段,一天96時段)。

涉及到兩個問題:

1.從電廠端oracle資料庫中把yxrtdata實時表的資料採集到本地sqlserver,並作為歷史表儲存

2.在本地處理裡yxrtdata表把在一刻鐘內的電力積分成電量,然後分解時間字段,對應到競價輔助決策系統

資料庫check_machine_quantity表的主鍵,最後插入記錄。

電廠端oracle資料庫,所要採集的表結構:

create table [dbo].[yxrtdata] (

[id] [decimal](10, 0) not null ,

[gcwzdm] [char] (24) collate chinese_prc_ci_as not null ,

[sz] [decimal](1, 0) null ,

[sj] [datetime] null

) 競價輔助決策系統資料庫(sqlserver2000)

被插入的表結構

create table [dbo].[check_machine_quantity] (

[year] [char] (4) collate chinese_prc_ci_as not null ,

[month] [char] (2) collate chinese_prc_ci_as not null ,

[day] [char] (2) collate chinese_prc_ci_as not null ,

[period_id] [numeric](10, 0) not null ,

[power_plant_id] [numeric](10, 0) not null ,

[machine_no] [numeric](10, 0) not null ,         --以上是主鍵

[check_machine_quantity_exam_quantity] [numeric](15, 4) null ,--要插入的電量

……………………

) 第乙個問題的解決思路:在sqlserver2000建立作業,實現每分鐘採集資料。

第二個問題的解決思路:對一刻鐘內的sz列求和公式為:sum(sz)*60.0/3600.0/10.0,單位為(萬千瓦時),sz的單位為(兆千瓦).取sj的時間部分(小時,分鐘)求出所在的段(一天共96個時段).以防對方資料晚採,對歷史表的處理時間段為取得最大時間的前30分鐘.

一下是處理過程的部分**。

declare @maxtime as datetime,  

@powerplantid as decimal,

@periodid as decimal,

@machineno as decimal,

@starttime as datetime,

@endtime as datetime,

@quantity as decimal(15,6)

set @powerplantid=32 --電廠id,若其他電廠修改.

select @maxtime=max(sj) from ycrtdata

--取最近一刻時間

set @maxtime=dateadd(minute,-convert(decimal,datepart(minute,@maxtime)%15),@maxtime)

--設定起始時間

set @starttime=dateadd(minute,-30,@maxtime)

set @endtime=dateadd(minute,15,@starttime)

--轉為第幾時段

set @periodid=(convert(decimal,datepart(hour,@starttime))*60+convert(decimal,datepart

(minute,@starttime)))/15+1

--處理1#機對應id=207

select @quantity=sum(sz)*60.0/3600.0/10.0 from ycrtdata where id=207 and sj>=@starttime and

sj<@endtime 

insert into gboss..check_machine_quantity            

(year,month,day,period_id,power_plant_id,machine_no,check_machine_quantity_exam_quantity)

values(year(@starttime),month(@starttime),day

(@starttime),@periodid,@powerplantid,1,@quantity) 

--delete from ycrtdata where id=207 and sj>=@starttime and sj<@endtime 

在sqlserver中新建作業,每15分鐘執行一次。 這樣就可以實現電力積分,轉為電量存到check_machine_quantity的表中的重複作業排程。

SQLSERVER2000技術規格

sqlserver2000技術規格 系統技術規格 每個伺服器最多可以允許16個sqlserver例項 每個例項可擁有 2147483467 個鎖 資料庫技術規格 sqlserver的資料庫大小1048516tb 每個資料庫可擁有的檔案組數32767 每個資料庫可擁有的檔案組數256 檔案大小 資料檔...

SQLSERVER2000啟動失敗

服務管理器中啟動sqlserver服務 彈出視窗的錯誤資訊是 本地計算機上的mssqlserver服務啟動後又停止了。一些服務自動停止,如果它們沒有什麼可做的,例如 效能日誌和警報 服務 1 解決方法 調整系統時間到你上一次能夠正常啟動的時間,啟動sqlserver服務,成功後,然後再把時間調回來。...

SQLSERVER2000技術規格

quote 系統技術規格 每個伺服器最多可以允許16個sqlserver例項 每個例項可擁有 2147483467 個鎖 資料庫技術規格 sqlserver的資料庫大小1048516tb 每個資料庫可擁有的檔案組數32767 每個資料庫可擁有的檔案組數256 檔案大小 資料檔案 32tb 夠大了吧,...