当前位置: 代码迷 >> PB >> PB11.5+SqlServer2005+SnapShot解决方案
  详细解决方案

PB11.5+SqlServer2005+SnapShot解决方案

热度:68   发布时间:2016-04-29 09:47:38.0
PB11.5+SqlServer2005+SnapShot
目前我在尝试把我的一个系统升到pb11.5并使用sqlserver2005的新特性snapshot。
老的系统全局都用sqlca,登录系统的时候就connect,即开始了一个事务。用了snapshot后就会发生这样的情况:a客户端先登录,b客户端后登陆,b新增或者修改了一笔记录,a客户端看不到b新增或修改的记录。
请教各位,如果升级后的系统仍然是全局一个sqlca,且autocommit=false,基于这样的前提,有什么办法可以避免上面这种情况的发生?

我现在的做法是每次读取之前都rollback using sqlca,以强制开始一个新的事务,比较笨的办法,有没有其他更稳妥的办法?

------解决方案--------------------
数据库快照的常用场景
1、维护历史数据以生成报表
2、在进行重大更新之前创建快照来保护数据。
3、减少用户失误带来的影响,比如可以每24小时创建6到12个滚动快照,每创建一个新的快照,就删除最早的快照。
4、用来进行数据库测试和恢复。

对源数据库的限制
1、不能对源数据库进行删除、分离或还原,必须先删除数据库快照,但可以备份
2、源数据库性能会受到影响,因为每次更新页都会对快照执行“写入时复制”操作。
3、源数据库必须处于连接状态,除非该数据库在数据库镜像会话中式镜像数据库。
4、若要在镜像数据库中创建数据库快照,数据库必须处于同步镜像状态。

数据库快照的限制
1、必须与源数据库在同一个服务器实例上
2、始终对整个数据库拍摄快照
3、禁止对model、master、tempdb数据库创建快照
4、不能更改数据库快照文件的任何规范
5、不能备份和还原,附加或分离数据库快照
6、不能在FAT32文件系统或RAW分区上创建快照,应为所用的稀疏文件由NTFS文件系统提供。
7、不支持全文索引,所以若从快照恢复会清除全文索引
  相关解决方案