在跟发电厂做辅助决策系统时,涉及到电量结算问题。电厂方只提供实时的每分钟的电力数据,我方要根据电力
来算出每一时段的电量(以一刻钟为一时段,一天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的表中的重复作业调度。
分享到:
相关推荐
### SQL Server 作业调度知识点详解 #### 一、SQL Server 作业调度概述 在 SQL Server 中,作业调度是一项重要的管理工具,它允许管理员自动化执行一系列任务(如备份数据库、清理日志等)。通过作业调度,可以...
- SQLSERVERAGENT服务必须处于运行状态,且启动它的NT登录用户应与启动SQL Server数据库的NT登录用户相同。 6. **作业历史记录管理** - 为了保留特定时间段的历史记录,可以在“SQL Server代理”属性中调整作业...
##### 第四步:配置作业调度 1. **创建新的作业调度**: - 在“新建作业”对话框中的“调度”选项卡,点击“新建”按钮。 - 在“调度名称”中输入调度名称,例如:“Schedule1”。 2. **设置作业运行频率**: - ...
1. 首先,你需要在SQL Server Management Studio (SSMS) 中打开你的SQL Server实例,然后导航到“管理”菜单,选择“SQL Server 代理”,接着点击“作业”。 2. 在作业列表中,右键单击并选择“新建作业”。在...
作业调度允许管理员定义何时以及如何执行作业,即使在发生错误时,也能按照预设的策略进行响应。 3. **警报**:SQL Server的警报功能使得系统能够对潜在问题做出响应。当特定条件满足时(如性能指标超出阈值或错误...
接下来,我们需要在SQL Server Agent中创建一个新的作业,并配置作业步骤调用刚才创建的存储过程。作业的调度可以根据实际需求设置,比如每隔一定时间间隔运行一次,或者在特定时间点运行。 在"1建表kill_log.sql...
- 2000年,发布SQL Server 2000。 - 2005年,发布SQL Server 2005。 ##### 4. Microsoft SQL Server系统的体系结构 - **核心组件**: - **数据库引擎**:负责数据的存储和检索。 - **Analysis Services**:...
"企业管理器创建作业调度"这个主题聚焦于如何利用企业管理器(SQL Server Management Studio,简称SSMS)来设计和安排数据库作业,以便在特定时间执行预定的任务。下面将详细阐述这一过程。 首先,企业管理器是SQL ...
SQL作业调度是数据库管理系统中的一个重要功能,它允许管理员或开发人员预先定义一系列SQL任务,并设置它们在特定时间或间隔执行。这种自动化管理方式对于数据库维护、数据备份、报告生成等场景非常有用。以下是对...
此外,还有计划缓存、作业调度等内存管理策略。 12. **安全性**:SQL Server提供角色、权限、认证和授权等机制,确保只有授权用户才能访问特定数据。 综上所述,《Inside Microsoft SQL Server 2005 The Storage ...
在SQL Server 2005中,为了实现自动化的数据管理任务,比如定时删除过期的图片数据,我们可以利用SQL Server Agent服务来创建作业(Job)。这个服务允许我们定义一系列的任务,然后按照预设的时间间隔自动执行。下面...
在IT行业的数据库管理领域,SQL Server的作业调度功能是确保数据处理自动化与高效运行的关键工具之一。本文将基于“预警代理重复执行作业”的主题,深入探讨如何在SQL Server环境中利用SQL Server Agent(SQL Server...
* Msdb:默认大小为 12MB,包含调度作业、警报等信息 * Pubs:示例数据库 * Northwind:示例数据库 数据库存储 * 数据文件(.mdf) * 次要文件(.ndf) * 日志文件(.ldf) * 文件组:方便对文件进行管理 创建...
1. SQL Server 2000版本的安装程序文件名为“sqlserver2000setup.exe”。这是安装SQL Server 2000数据库管理系统的主要安装文件。用户需要运行此安装程序以开始安装过程。 2. SQL Server 2000是微软公司推出的...
5. **设置作业调度** - **计划**:在“作业属性”对话框中,选择“计划”选项卡来设定作业的执行时间。你可以设置一次性执行,或者创建重复的计划,比如每天、每周或每月执行。根据需求调整执行频率和具体时间。 6...
DTS是SQL Server 2000中的数据迁移工具,主要用于数据转换和加载。随着SQL Server版本的更新,DTS已被SSIS取代,SSIS在功能上更为强大,提供了更多预定义的任务和组件,支持更复杂的ETL(Extract, Transform, Load...
4. 启动SQL Server代理,使它执行“数据库维护计划”作业,并根据需要为作业制定具体的执行计划。 重复上述操作可以为其他六天制定相应的备份计划。每次制定的备份任务名称根据执行间隔进行适当改动,并将备份数据...
SQL Server 代理是SQL Server中的一个内置服务,专门用于自动化和调度任务。要设置它随系统启动,可以通过以下步骤操作: 1. 打开“我的电脑”,然后进入“控制面板”。 2. 在控制面板中选择“管理工具”。 3. 在...
- **Msdb数据库**:专门用于SQL Server代理程序的调度、警报、作业管理和操作日志记录。 ##### 用户数据库 用户数据库是用户用来存储应用程序数据的数据库,其设计和结构完全取决于用户的需求。 #### 访问限制与...