计算销售批次分布问题

No1025 2015-04-29 03:49:03
已知如下图:

求下面的结果:



DECLARE @t_splsk TABLE (
id INT --ID,唯一
,plh CHAR(11) --结转号,唯一
,djbh CHAR(15) --单据编号
,dj_sn INT --单据序号
,sipd CHAR(11) --商品ID
,pihao CHAR(60) --批号
,pici CHAR(60) --批次
,rkshl INT --入库数量
,chkshl INT --出库数量
,jcshl INT --结存数量
)
--插入临时流水表
INSERT INTO @t_splsk ( id, plh, djbh, dj_sn, sipd, pihao, pici, rkshl, chkshl, jcshl )
SELECT 1,'Z0000298179','JHAGZZ00005980',9,'SPH00004013','130922','JHAGZZ00005980_9',13200,0,13200 UNION ALL
SELECT 2,'Z0000298191','XSAGZZ00024459',9,'SPH00004013','130922','',0,13200,0 UNION ALL
SELECT 3,'Z0000298540','JHAGZZ00005981',4,'SPH00004013','130922','JHAGZZ00005981_4',36000,0,36000 UNION ALL
SELECT 4,'Z0000298552','XSAGZZ00024489',4,'SPH00004013','130922','',0,36000,0 UNION ALL
SELECT 5,'Z0000305527','JHAZDA00006095',5,'SPH00004013','130922','JHAZDA00006095_5',1500,0,1500 UNION ALL
SELECT 6,'Z0000305530','JHAZDA00006095',4,'SPH00004013','130922','JHAZDA00006095_4',36300,0,37800 UNION ALL
SELECT 7,'Z0000305625','XSAZDA00025000',1,'SPH00004013','130922','',0,300,37500 UNION ALL
SELECT 8,'Z0000305645','XSAZDA00025003',37,'SPH00004013','130922','',0,9000,28500 UNION ALL
SELECT 9,'Z0000305647','XSAZDA00025004',1,'SPH00004013','130922','',0,1500,27000 UNION ALL
SELECT 10,'Z0000305804','XSAZDA00025028',1,'SPH00004013','130922','',0,600,26400 UNION ALL
SELECT 11,'Z0000305821','XSAZDA00025031',1,'SPH00004013','130922','',0,1500,24900 UNION ALL
SELECT 12,'Z0000305954','XSAZDA00025039',97,'SPH00004013','130922','',0,1500,23400 UNION ALL
SELECT 13,'Z0000306039','XSAZDA00025048',1,'SPH00004013','130922','',0,900,22500 UNION ALL
SELECT 14,'Z0000306244','XSAZDA00025054',33,'SPH00004013','130922','',0,1800,20700 UNION ALL
SELECT 15,'Z0000306428','XSAZDA00025076',2,'SPH00004013','130922','',0,300,20400 UNION ALL
SELECT 16,'Z0000306489','XSAZDA00025088',1,'SPH00004013','130922','',0,15000,5400 UNION ALL
SELECT 17,'Z0000306491','XSAZDA00025089',1,'SPH00004013','130922','',0,4200,1200 UNION ALL
SELECT 18,'Z0000306622','XSAZDA00025105',1,'SPH00004013','130922','',0,600,600 UNION ALL
SELECT 19,'Z0000314165','XSAZDA00025798',1,'SPH00004013','130922','',0,300,300 UNION ALL
SELECT 20,'Z0000317304','XSAZDA00026133',8,'SPH00004013','130922','',0,300,0

SELECT * FROM @t_splsk
...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-04-29
  • 打赏
  • 举报
回复
循环批次也可以,不过数量字段只要一个,id用流水的id。
一样可以用 SELECT TOP 1 直接定位下一条可分配的流水的。
No1025 2015-04-29
  • 打赏
  • 举报
回复
我的处理办法,感觉复杂了点

--批次结存表
DECLARE @t_PICI TABLE (id INT,pici CHAR(60),rkshl INT,chkshl INT,jchsl INT)
INSERT INTO @t_PICI 
SELECT ROW_NUMBER() OVER(ORDER BY plh ASC) AS id,pici,rkshl,0 AS chkshl,rkshl AS jcshl FROM @t_splsk WHERE pici<>'' ORDER BY plh 
--批次循环
DECLARE @N INT,@t_N INT 
SELECT @N = COUNT(*) FROM @t_PICI
SET @t_N = 1
WHILE @t_N <= @N
BEGIN	
	--获取批次
	DECLARE @pici CHAR(60)  
	SELECT @pici = LTRIM(RTRIM(pici)) FROM @t_PICI WHERE id = @t_N  
	--流水循环
	DECLARE @M INT,@t_M INT  
	SET @t_M = 1
	SELECT @M = COUNT(*) FROM @t_splsk 
	WHILE @t_M <= @M
	BEGIN
		--获取批次结存数量	
		DECLARE @jcshl INT,@pc_chkshl INT   
		SET @jcshl = 0
		SET @pc_chkshl = 0
		SELECT @jcshl = jchsl,@pc_chkshl = chkshl FROM @t_PICI WHERE LTRIM(RTRIM(pici))  = LTRIM(RTRIM(@pici)) AND jchsl - chkshl >=0 
		--获取流水出,入库数量及结转号
		DECLARE @plh CHAR(11),@rkshl INT,@chkshl INT,@bs CHAR(1)
		SELECT @plh = plh,@rkshl = ISNULL(rkshl,0),@chkshl = ISNULL(chkshl,0)
		      ,@bs = CASE WHEN LEFT(djbh,3)<>'JHA' AND @jcshl - @pc_chkshl + @rkshl - @chkshl >= 0 AND pici ='' THEN 'Y' ELSE 'N' END
		FROM @t_splsk WHERE id = @t_M
		
		IF @bs ='Y'
		BEGIN 
			IF @jcshl + @rkshl - @chkshl >=0 
			BEGIN
				UPDATE @t_PICI  
					SET chkshl = chkshl + ISNULL(@rkshl,0) + ISNULL(@chkshl,0) 
				WHERE LTRIM(RTRIM(pici)) =  LTRIM(RTRIM(@pici)) 
				
				UPDATE @t_splsk 
					SET pici =  LTRIM(RTRIM(@pici)) 
				WHERE plh = @plh
			END   
		END 
		SET @t_M = @t_M + 1 
	END
	SET @t_N = @t_N + 1	
END
--展现 
SELECT * FROM @t_splsk ORDER BY id
Tiger_Zhao 2015-04-29
  • 打赏
  • 举报
回复
你没有单独得批次库存,肯定得用游标了。
DECLARE @t_splsk TABLE (
id INT primary key --要加主键,否则不能用游标更新
...
)
INSERT INTO @t_splsk ...

DECLARE @t_pikc TABLE ( -- 批次库存
id INT --@t_splsk.id,判断先后的依据
,pici CHAR(60) --批次
,jcshl INT --结存数量
)

DECLARE @id int
DECLARE @pici char(60)
DECLARE @rkshl int
DECLARE @chkshl int

DECLARE cur_splsk CURSOR
FOR
SELECT id, pici, rkshl, chkshl
FROM @t_splsk
ORDER BY id
FOR UPDATE

OPEN cur_splsk

FETCH NEXT FROM cur_splsk
INTO @id, @pici, @rkshl, @chkshl

WHILE @@FETCH_STATUS = 0
BEGIN
IF @pici <> ''
BEGIN

INSERT INTO @t_pikc VALUES(@id, @pici, @rkshl)

END
ELSE
BEGIN

DECLARE @kc_id int
DECLARE @kc_pici char(60)
DECLARE @kc_jcshl int

SELECT TOP 1
@kc_id = id,
@kc_pici = pici,
@kc_jcshl = jcshl
FROM @t_pikc
WHERE jcshl >= @chkshl
ORDER BY id

UPDATE @t_splsk
SET pici = @kc_pici
WHERE CURRENT OF cur_splsk

UPDATE @t_pikc
SET jcshl = jcshl - @chkshl
WHERE id = @kc_id

END

FETCH NEXT FROM cur_splsk
INTO @id, @pici, @rkshl, @chkshl
END

CLOSE cur_splsk
DEALLOCATE cur_splsk

SELECT * FROM @t_splsk

SELECT * FROM @t_pikc

         id plh         djbh                  dj_sn sipd        pihao    pici                     rkshl      chkshl       jcshl
----------- ----------- --------------- ----------- ----------- -------- ------------------ ----------- ----------- -----------
1 Z0000298179 JHAGZZ00005980 9 SPH00004013 130922 JHAGZZ00005980_9 13200 0 13200
2 Z0000298191 XSAGZZ00024459 9 SPH00004013 130922 JHAGZZ00005980_9 0 13200 0
3 Z0000298540 JHAGZZ00005981 4 SPH00004013 130922 JHAGZZ00005981_4 36000 0 36000
4 Z0000298552 XSAGZZ00024489 4 SPH00004013 130922 JHAGZZ00005981_4 0 36000 0
5 Z0000305527 JHAZDA00006095 5 SPH00004013 130922 JHAZDA00006095_5 1500 0 1500
6 Z0000305530 JHAZDA00006095 4 SPH00004013 130922 JHAZDA00006095_4 36300 0 37800
7 Z0000305625 XSAZDA00025000 1 SPH00004013 130922 JHAZDA00006095_5 0 300 37500
8 Z0000305645 XSAZDA00025003 37 SPH00004013 130922 JHAZDA00006095_4 0 9000 28500
9 Z0000305647 XSAZDA00025004 1 SPH00004013 130922 JHAZDA00006095_4 0 1500 27000
10 Z0000305804 XSAZDA00025028 1 SPH00004013 130922 JHAZDA00006095_5 0 600 26400
11 Z0000305821 XSAZDA00025031 1 SPH00004013 130922 JHAZDA00006095_4 0 1500 24900
12 Z0000305954 XSAZDA00025039 97 SPH00004013 130922 JHAZDA00006095_4 0 1500 23400
13 Z0000306039 XSAZDA00025048 1 SPH00004013 130922 JHAZDA00006095_4 0 900 22500
14 Z0000306244 XSAZDA00025054 33 SPH00004013 130922 JHAZDA00006095_4 0 1800 20700
15 Z0000306428 XSAZDA00025076 2 SPH00004013 130922 JHAZDA00006095_5 0 300 20400
16 Z0000306489 XSAZDA00025088 1 SPH00004013 130922 JHAZDA00006095_4 0 15000 5400
17 Z0000306491 XSAZDA00025089 1 SPH00004013 130922 JHAZDA00006095_4 0 4200 1200
18 Z0000306622 XSAZDA00025105 1 SPH00004013 130922 JHAZDA00006095_4 0 600 600
19 Z0000314165 XSAZDA00025798 1 SPH00004013 130922 JHAZDA00006095_5 0 300 300
20 Z0000317304 XSAZDA00026133 8 SPH00004013 130922 JHAZDA00006095_4 0 300 0

         id pici                     jcshl
----------- ------------------ -----------
1 JHAGZZ00005980_9 0
3 JHAGZZ00005981_4 0
5 JHAZDA00006095_5 0
6 JHAZDA00006095_4 0
已完美 采购管理 ·采购合同根据库存报警生成,或由配送需求产生; ·支持受托代销商品入库、退货、结算管理; ·采购入库可以直接调用采购合同或直接录入,并自动产生往来帐,支持多仓库多货位入库; ·进价跟踪,四种单位,并为每种单位进行价格跟踪; ·采购付款相应减少往来帐,付款单支持按单、按行结算,支持金额折让;预付款管理; ·采购成本表查询,采购入库单统计查询,采购退货统计查询; ·商品进货成本报表,采购批次汇总,采购清单; ·采购结算调价、采购退货结算调价。 卓越精算t3单机版 库存管理 ·同价调拨、变价调拨,支持货位调拨,效期查询; ·库存盘点单,支持多人盘点; ·报损、报溢管理;直接出库、入库单;商品拆装管理; ·效期查询、批次跟踪查询;库存状况;库存预警管理;分设各个门店的物价管理,各门店可以实行不同价格; ·库存成本调价、库存批次调整、期初库存补录; ·库存状况查询,批次跟踪查询,库存商品分布,单品库存查询; ·库存上、下限报警。 销售管理 ·销售合同管理;支持委托代销发货、退货、结算管理; ·销售单可调用销售合同或直接录入,并自动产生相应往来; ·往来单位信用额度,职员信用额度;应收款管理,减少往来帐;预收款管理; ·售价跟踪,五种预设售价、会员价、零售价、特价; ·支持销售单整单抹零功能; ·销售合同查询、销售出库单统计查询、销售退货统计查询; ·收款结算查询、各种销售报表、商品销售清单,销售流向查询; ·滞销、畅销商品管理、无销售商品查询; ·销售成本利润表,销售回款分析; ·销售结算调价、销售退货结算调价。 财务管理 ·往来调帐、往来分析、预收预付款查询、应收应付款查询、帐龄分析; ·现金费用单、一般费用单、其他收入、固定资产管理、待摊费用管理; ·会计凭证,直接制作会计凭证;支持单行红冲; ·往来单位的销售收入、回款金额及销售毛利查询; ·现金回款额全面系统的分析;应收、应付调帐。 卓越精算t3单机版 零售管理 ·支持条码枪、小票打印机、钱箱、客显屏等常用POS设备; ·一品多码,除拼音码、条码、编码,还可以支持用户无限制自定义编码; ·交接班管理,零售日报、月报、职员报表; ·多种数据上传方式,适用不同用户要求; ·会员管理,支持会员打折,会员价管理,特价商品管理,营业款管理。 ·零售单允许修改帐户、销售员。 配送管理 ·对门店缺货商品进行配送;配送中心缺货商品生成商品需求; ·可对销售价格进行修改,并生成可查询单据;可对商品进行统一的调价; ·可对指定门店销售价格及零售价格进行修改,并生成可查询单据; ·同价配送单、变价配送单、配送成本表,各种配送单据查询; ·对加盟店和自营店进行分别管理,门店销售查询; ·多种数据传输方式,支持断网传输和实时传输。 人事工资 ■ 通过定义员工类别,对部门、员工人事档案进行有序管理; ■ 可以同时设置月度工资、计件工资;自设工资项目、工资计算方法; ■ 自动进行工资费用的分配与结转,并生成会计凭证,将工资核算与帐务处理有机结合; ■ 支付工资之后自动生成会计凭证,完全实现工资管理自动化;可以输出工资条、工资发放表、 工资汇总表、工资费用分配表等常用工资报表,对企业人力资源成本一目了然。 决策支持 ·往来单位业务分析、内部职员业务分析; ·职员销售提成管理、内部结算管理、会员卡管理; ·各种销售排行榜,单品销售综合分析,日期销售报表; ·全能进销存变动表、供货商进销存查询、销售回款分析; ·进销存综合查询、销售流向查询; ·全能进销存变动表,供货商进销存变动表。 ·商品、客户、部门、职员、片区、仓库及门店销售排行。
  一、智点进销存软件的显著特点   1、 自动跟踪客户的销售价格。即自动跟踪到某客户上次购买某商品的价格。   2、 自动跟踪供贷商的供货价格。即能跟踪到某供货商上次供应某商品的供货价格。   3、多种成本核算方法,如:先进先出法、后进先出法、加权平均法、批次计价法。   4、自动结算功能,如果选择自动产生销售结算单功能后,在填写销售出库单后,系统自动产生销售结算单,计入应收款汇总表与明细表中。   5、单据导入与导出,作为外部文件保存,方便本地或异地传输。   6、反算单价和折扣。比如,我们有时会遇到这种情况:数量为3,总金额?00,需要计算出它的价格。本系统提了一键解决的方法。即只需要按某一功能键,系统自动计算价格,填入单据对应的格中。   7、 折扣处理,表单套打   8、更加灵活的表单修改与设计。增加了回退功能,当操作错误,可以回到上一步或上几步操作。可以自动添加行数与减少行数,可以自动增加行高或减少行高等。   9、允许负库存,任意时间段查询。   10、 各种汇总表,明细表均可以输出成其他文件格式(Excel电子表格)。   11、小数位可任意调整:数量小数位、单价小数位、金额小数位、税率小数位、均可以随时从零位调整到六位。   12、多帐套管理:建帐数目不受限制。   13、 操作简便:懂业务、会电脑、任何专业人员与非专业人员都能很快上手。   14、实时性:只要录入进销存业务数据、所有汇总表、明细表的数据均自动产生。   15、灵活性:所有业务期间的数据录入、修改、插入、删除灵活、不存在反结转等繁琐的操作 。   16、适用范围广:本系统具有强大的表单修改、设计功能,因此广泛适用于各行各业。   二、智点进销存软件的模块说明   1、基本设置   可以设置多仓库、部门、员工、客户管理、供货商管理、库存高低限管理、费用项目设置、商品类型与编号、结算方式等。   2、进销存单据   进货入库单、退货单、产成品入库单、销售出库单、销售退货单、领料单、退料单、借出单、退还单、调拨单、报损单、盘点盈亏单。   3、应收、应付款单   收款单、付款单、进货结算单、销售结算单、应收款单、应付款单。   4、费用   进货费用单、销售费用单、其他费用单。   5、各种汇总表、明细表   库存汇总表与明细表、进出库存帐、库存量及高低限对照表、商品进货汇总表与明细表   商品销售汇总表与明细表、销售毛利汇总表与明细表、供货商供货汇总表与明细表   客户销售汇总表与明细表、部门销售汇总表与明细表、员工销售汇总表与明细表   应收款汇总表与明细表、应付款汇总表与明细表、费用汇总表与明细表   产成品入库汇总表与明细表、部门产成品入库汇总表与明细表、员工产成品入库汇总表与明细表   领料汇总表与明细表、部门领料汇总表与明细表、员工领料汇总表与明细表   调拨商品汇总表与明细、借出物品汇总表与明细表、项目用物品统计表与明细表   商品在各仓库分布表、过期物品汇总表与明细表   6、与通用财务软件的接口   可以将进销存中的数据输出,变成通用财务软件可以接收的数据,直接生成财务的凭证。   7、强大的表单修改与设计功能   可以修改表格单据或报表的格式,如表的行数、列数,行与列所显示的项目内容,格的大、小、宽、窄,文字的位置等。   8、安全   多级安全保护措施,连续自动备份,能实现帐套自动修复,自动记录操作日志。
物联通V7.2发版公告 A.开单报表类: 1.新增统一客户供应商管理功能(对接财贸、分销系列)。 2.新增组合套件销售单据,更好适用套餐类销售的应用场景(注:财贸系列暂时不支持)。 3.新增商品品牌预收款管理(支持V3/A8 V9.83及以上版本)。 4.新增报价单、请购单两种单据类型(支持V3/A8 V9.72及以上版本)。 5.新增借款单、费用报销单两种单据类型(支持财贸双全16.0及以上版本)。 6.新增单据红冲功能,支持单据:销售单、销售退货单、收款单、同价调拨单(注:财贸系列不支持) 7.新增销售退货单支持扫描序列号退货功能。 8.新增分销系列支持序列号盘点功能。 9.新增业务员回款表,更方便查询每个业务员的销售、收款、回款情况。 10.新增收款提交后,管家婆中自动按单结算功能。 11.对接财贸双全16.0及以上版本,支持以下单据过账:销售订单、进货订单、进货单、销售单、销售换货单、销售退货单、同价调拨单、收款单、付款单、一般费用。 12.使用预收款结算时,控制不允许超出预收余额收款。 13.单据审核时,支持查看审核原因(注:财贸系列不支持) 14.加入零售退货单审核(仅支持V3/A8产品) 15.开单时支持签署电子签名,可作为单据附件上传至管家婆系统。 16.开单选择商品/客户信息时,支持在线获取账面库存/应收应付信息。 17.增加配送管理,业务员送货完毕后在管家婆系统中可查看送达时间及地址。 18.综合开单加入销售和收款优惠功能,支持根据销售和退货差额自动计算收款金额。 19.业务交账表加入销售金额合计,并纳入综合开单的数据统计。 20.APP端用户配置中,默认开启【录单快速进入开单界面】。 21.APP端用户配置中,支持自定义即时搜索的显示条数。 22.针对出入库的验货功能进行优化改版,让验货操作更加方便【安卓PDA版】。 23.针对手机电脑行业的序列号以及食品行业批次的补录模块优化改版【安卓PDA版】。 B.巡店外勤类: 1.物联通APP端客户分布功能,支持按线路查看客户分布情况。 2.新增客户拜访规划周期循环功能,让拜访规划制定更方便。 3.优化自动签到功能,业务行程轨迹更详细,并支持查询到店拍照信息以及累计行驶里程数。 4.增加费用预申报功能,并支持多人审核。 5.新增离店语音提醒功能,提醒业务员离店时及时进行签退。 6.新增日程提醒功能,自动提醒业务员记录的待办事宜。 7.拍照管理中,支持分别录入每个照片类型的备注信息。 8.新增/修改客户时,支持模糊查询线路信息。 9.客户拜访中,默认只显示当日计划拜访客户信息,支持筛选历史未完成拜访数据进行补拜放。 10.工作台中,查询附近客户信息时,直接显示客户门头照信息。 C.后台设置类: 1.微信助手支持每天早晨8点准时推送昨日销售数据。 2.新增线路客户excel导入功能。 3.业务拜访行程表,加入签到偏离数据。 4.新增物联通首页图形化报表支持直接跳转相应的报表功能。 5.对接财贸系列,新增自动识别会计准则功能。 6.添加业务员时可直接选择权限组,不必重复设置权限。 7.基本信息授权时,支持模糊搜索授权信息。 8.客户信息中可以直接点开地图定位客户的经纬度信息。 9.签到照片汇总表中,加入每个客户业务成交笔数的统计。 10.新增客户信息锁定功能,避免业务员在物联通APP端将正确的客户信息修改掉。 D.打印类: 1.蓝牙小票支持打印可供扫描的条形码,方便超市快速入库。 2.蓝牙小票表头、表体字段开放是否打印的配置。 3.新增得实针式票据打印机,更好的支持多联单打印。 4.新增不干胶打印机,为商品价格标签打印与发货单打印提供便利。 E.支持的管家婆版本调整: 辉煌系列 V12.0及以上(辉煌普及,辉煌2代,辉煌Online) 分销系列 V9.72及以上(分销V3 分销A8) 分销V1 V1.1及以上 财工贸 V16.0及以上(财贸双全 财贸.NET )
自动化上位服务器的冗余全文共6页,当前为第1页。自动化上位服务器的冗余全文共6页,当前为第1页。自动化上位服务器的冗余 自动化上位服务器的冗余全文共6页,当前为第1页。 自动化上位服务器的冗余全文共6页,当前为第1页。 今天,很多工程师对dcs和plc的CPU冗余、电源冗余、输入/输出模块冗余、甚至网络冗余已经有所了解了,它们位于自动化系统的1层(Level 1),见下列图,现在我们来讨论一下2层和以上部分的冗余问题。这些部分包括:监控与数据采集(SCADA)、制造执行系统(MES)和企业资源计划(ERP)等系统。 工业自动化需要高等级的可靠性,这个需求扩展到计算硬件和软件--也具有高可用性。在低层系统,组件使用高可用性设计,诸如嵌入式控制器,已经有多年的历史。但今天的人们期望自动化系统能执行更多的任务-诸如与后端数据库交换信息-成为不断集成和智能架构的一部分。 比方一家汽车生产商,在安装安全气囊时,需要记录每个装配螺钉的转矩值,并把这个信息发送到公司的数据库。如果这个数据在制造过程中变得不靠谱,在系统运行时引起失效,后果会非常严重。为了在制造过程中找出不能满足规范的原因,工厂可能不得不结束生产线,请相关技术人员查找问题所在。对于某些流程行业,诸如制药行业,糟糕的数据可能意味着一整批已经生产的产品必须废弃。 自动化上位服务器的冗余全文共6页,当前为第2页。自动化上位服务器的冗余全文共6页,当前为第2页。 自动化上位服务器的冗余全文共6页,当前为第2页。 自动化上位服务器的冗余全文共6页,当前为第2页。 因为自动化系统要做很多的事情,所以系统变得非常复杂。公司必须经常对系统开展评估,发现问题所在,找出提高效率方法,在计算架构**立高可靠性和高可用性的冗余是减少停机时间、提高整体生产率的方法之一。 建立高可用性 为了找到在一个系统中需要的冗余点,最好从有软件环境的高层开始。考察高层子系统,诸如数据库和管控台,对需要高可用性的地方开展优先排序。如果一个特定的子系统需要连续的信息更新,数据存储对这个子系统而言,应该具有高可用属性。相反,管控台为操作员提供人机界面,能够与现场信息互动,反应速度不是很快,所以不需要最高的可用性。 下一步是对多个子系统制定不同可用性等级的策略。如果某个数据库必须要高可用性,并且由多个服务器支持,功能怎样分布到各服务器-特别是如果其中的一台失效了怎么办?这些都是策略要考虑的问题。对服务器实施高可用性有几种可选方法,包括软件和硬件的解决方案。 在软件领域,市场销售的操作系统和数据库很多都包含了群件功能,这意味着在集群机器中,能够实现从失效节点自动化上位服务器的冗余全文共6页,当前为第3页。自动化上位服务器的冗余全文共6页,当前为第3页。到不同节点的自动切换。很多虚拟化产品也具有这样的切换能力,这个功能能使企业快速启动应急预案,执行备份解决方案,自动调出新的虚拟实例,这是在配置时事先要完成的特定角色。 自动化上位服务器的冗余全文共6页,当前为第3页。 自动化上位服务器的冗余全文共6页,当前为第3页。 虚拟化允许不同类型的软件栈使用统一的方法管理,这在老子系统和新子系统需要共存的情况下,是非常适合的。当失效发生时,同类系统的单一应用框架能够把需要的预备应用切到一个新服务器上。 这些解决方案的每个性能都不一样,差异巨大。一个全部冗余的硬件集群方案仅需要1秒或2秒完成切换,而由一个应用容器检查到问题,然后转移至一个新服务器可能需要30秒。选择方案是否能满足响应要求在设计阶段是非常关键的,因为要改变一个冗余的架构层,可能需要对整个系统重新设计一次。 要注意的是,在集群的子系统内操作时,需要坚持一些原则,诸如最小化状态和无扰动切换。有可能的话,使服务中的状态信息最小化,并存放在公共存储器中。对于不能完全转移到公共存储器的信息,非易失性存储结合一种复制策略,可以实现节点失效的影响最小化。 自动化上位服务器的冗余全文共6页,当前为第4页。自动化上位服务器的冗余全文共6页,当前为第4页。 当一个托管数据库实例系统停机时,他可能处于最后交易的一半写状态。当新节点接入后,方案应设计成能够滚动返回操作,已交易部分应防止重复输入,不然会使记录的不正确率增高。错误数据的影响可能是灾难性的。如果不能找到制药生产过程的正确历史,制造商可能不得不召回一整批次产品,价值可能有几百万美元。 自动化上位服务器的冗余全文共6页,当前为第4页。 自动化上位服务器的冗余全文共6页,当前为第4页。 配置硬件冗余 系统除了在软件级上建立高可用性外,硬件应确保不会因任意单点失效而使系统宕机。企业应能通过硬件冗余防止系统失效,并能实现在线可维护。在服务器级,冗余是确保运行连续、可靠计算和数据安全的根底。 冗余硬件的组件应该包括: 冗余服务器和热插拔机架、冷却风扇;

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧