不开更改数据连接接能更改时间么

Posts - 150,
Articles - 12,
Comments - 1200
(SQL Server & MySQL) DBA
10:43 by 听风吹雨, ... 阅读,
一.本文所涉及的内容(Contents)
二.背景(Contexts)
  SQL Server数据库中Basic与Group两个表需要提供部分字段给其它程序读取,程序把这两个表的数据缓存到内存中,但是程序想知道这两个表数据的变更信息,包括:Insert/Update/Delete,有什么方式可以实现呢?
三.方案(Solution)
  上面的场景,使用SQL Server复制(Replication)是无可厚非的,但是如何及时获取变更信息呢?
  使用变更数据捕获CDC这个功能,在数据库订阅库使用CDC,再创建一个存储过程;通过向存储过程传入最后一次记录(程序自己保存)的日志序列号(LSN),返回表变更的数据列表,程序先从内存中删掉这些ID值,再把变更数据插回内存,这个逻辑可以简化对Insert/Update/Delete的所有处理;
(Figure1:变更数据捕获)
  使用更改跟踪(Chang Tracking)这个功能,更改跟踪会包括跟踪表的唯一值,还有字段SYS_CHANGE_OPERATION,枚举值(I=Insert、U=Update、D=Delete),还有DML操作的版本号:SYS_CHANGE_VERSION,它是每进行一次DML,都会递增一个版本号,所以你可以针对I=Insert、U=Update、D=Delete不同的类型加上版本号过滤,就可以找到那些数据进行了更新;
(Figure2:更改跟踪)
  使用timestamp,在订阅的两个表中加入这个字段,timestamp记录的是数据变更的时间,在程序中读取大于这个timestamp的数据进行操作(操作如想法一所示);但是有个缺点,这种方式没有办法记录到删除的记录,除非表中有个字段是用来标识是否删除的,发布库是不存在Delete操作的,只能有Insert和Update。
需要同步的字段如下:
Basic表:ID,Name,Category,overseas,GroupID,Delete;
Group表:ID,NAME,Delete;
CDC的基本使用可以参考:,更改跟踪可以参考:,下面我讲讲想法三的具体实现;
四.实现过程(Process)
(一) 环境信息
系统环境:Windows Server 2008 + SQL Server 2008 R2
发布服务器:192.168.1.152,服务器名称:USER-H2B2
订阅服务器:192.168.1.151,服务器名称:USER-FJMO
发布数据库:Task
订阅数据库:TaskSiteInfo
(二) 实现概述
  首先是通过Task发布、TaskSiteInfo进行订阅数据,在这两个表中是有一个Delete的字段,用来标识数据是否给删除的,另外需要在TaskSiteInfo数据库的两个表都加入timestamp字段,加入这个字段的目的是由程序记录查询的最大的timestamp,通过这个timestamp返回大于某个时间的数据。
(三) 搭建步骤
A. 搭建复制的过程请参考文档:,在订阅服务器查看表的信息,如下图所示:
(Figure3:表数据)
B. 接下来我们修改Basic和Group表结构,为每个表添加一个timestamp类型的字段;
--修改表结构
ALTER TABLE
[dbo].[Basic] ADD
timestamp timestamp NOT NULL
--修改表结构
ALTER TABLE
[dbo].[Group] ADD
timestamp timestamp NOT NULL
C. 为这个timestamp类型的字段分别创建索引;
--创建索引
CREATE NONCLUSTERED INDEX IX_Basic_TimeStamp ON [dbo].[Basic]
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX IX_Group_TimeStamp ON [dbo].[Group]
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
D. 通过timestamp字段查询变更数据,假如上次保存的时间戳的值是:0x3E30,那么我们通过下面的SQL脚本就能获取到这个时间戳之后变更的记录,获取到这里数据就可以更新内存数据了;
--返回某时间戳之后的数据
SELECT * FROM [dbo].[Basic]
WHERE timestamp & 0x3E30
(Figure4:某时间戳之后变更的记录)
五.注意事项(Attention)
1. 每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新操作时,该计数器值就会增加。 该计数器是数据库时间戳;
2. 一个表只能有一个 timestamp 列;
3. 注意删除数据操作是没有办法记录时间戳的,所以你删除记录的逻辑应该是用一个字段标识这行记录已经被删除;
4. 这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用;
5. 如果该列属于索引键,则对数据行的所有更新还将导致索引更新;
6. 若要返回数据库的当前时间戳值:SELECT @@DBTS
7. 在 DDL 语句,请尽量使用 rowversion 而不是 timestamp,在SSMS设计表的时候是没有rowversion数据类型的;
8. 在 CREATE TABLE 或 ALTER TABLE 语句中,不必为 timestamp 数据类型指定列名,如果不指定列名,则 Microsoft SQL Server 数据库引擎将生成 timestamp 列名;但 rowversion 同义词不具有这样的行为。 在使用 rowversion 时,必须指定列名。
9. 不可为空的 rowversion 列在语义上等同于 binary(8) 列。 可为空的 rowversion 列在语义上等同于 varbinary(8) 列。
六.参考文献(References)以前手机都可以开数据连接,以前是用的移动的卡,现在换了一张联通的卡就开不起数据了,现在也没有去申请_百度知道
以前手机都可以开数据连接,以前是用的移动的卡,现在换了一张联通的卡就开不起数据了,现在也没有去申请
现在也没有去申请流量套餐以前手机都可以开数据连接,以前是用的移动的卡,现在换了一张联通的卡就开不起数据了
提问者采纳
会将具体参数发送给您的您好。您可以拨打客服。需要在手机中将上网参数修改一下就可以了,联通和移动网络设置的参数是不一样的,对照着设置就可以了
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
数据连接的相关知识
其他1条回答
去营业厅问一下
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁vivox5m开起数据连接能用多久时间_百度知道
vivox5m开起数据连接能用多久时间
您的回答被采纳后将获得:
系统奖励20(财富值+经验值)+难题奖励30(财富值+经验值)
我有更好的答案
要延长电池使用时间、游戏:①关闭 WLAN (WIFI) ,需要时再打开,网络信号强弱等都会影响电池的待机使用时间若是指手机电池使用时间、后台运行程序多等情况就非常耗电)、移动网络,可按以下几点建议操作、蓝牙;影响电池效能的因素有很多、GPS等不常用的服务。③启用机器自带的省电功能或下载第三方省电软件进行电源管理,&quot,如:使用频率。②关闭不需要的后台运行程序,机器运行状态(如导航
其他类似问题
为您推荐:
加盟费的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁联想S890 DRM重置后,数据连接图标开启时间延长,而且显示数据连接后不能上网。怎么办?_百度知道
联想S890 DRM重置后,数据连接图标开启时间延长,而且显示数据连接后不能上网。怎么办?
感谢您对联想的支持://thinkbbs,您可以参考联想技术论坛://bbs.php://bbs:http://lenovobbs,交流您的问题.com。更多问题您可以咨询idea论坛?intcmp=FM_LBBS_baidureply期待您满意的评价./forum:http.lenovomobile./forum尊敬的联想用户您好!关于您的这个问题
来自团队:
7您好;2,建议更换网络环境尝试,这里建议您参考以下排除步骤:http:1,XXX机型菜单路径如下.com)进行咨询了解、360手机卫士等软件设置:“系统设置--数据连接”,建议您抽空到附近联想授权维修站具体检测处理;如上述操作后问题依旧无法得到有效解决,为了您日后的正常使用、S890机型制式为WCDMA&#47,具体参数建议与运营商客服核对;GSM;4,卡槽1可以使用联通3G&#47.lenovomobile;5;2G和移动2G://ask;6.lenovo://support1,卡槽2可以使用联通和移动2G网络,请确认所使用sim卡在此范围,将选项切换到不同接入点重启尝试:“系统设置--更多--移动网络--接入点名称(APN)”、请核对数据开关服务是否开启,点击对应接入点进入参数设置,建议联系运营商具体检测处理、如上述操作无法改善、请核实设备是否有进行流量监控设置、建议对接入点进行切换尝试,S890机型菜单路径如下://ask,不排除是兼容性问题,XXX机型菜单路径如下、请核对是否已经欠费,如余额不足请向运营商补足欠费后进行尝试、建议您更换其他手机或对比周边其他同运营商用户使用情况,且之前可以正常联网.com.lenovo,不排除是网络环境较差导致.com,如在个别区域出现。若问题依旧存在无法解决、如您有条件更换其他sim卡,建议您更换sim卡进行对比使用。官网授权维修站点查询,若个别sim卡无法正常联网、可能是网络接入点参数设置出现异常.cn/lenovo/wsi/station/servicestation" target="_blank">http:“系统设置--更多--移动网络--接入点名称(APN)”,或使用海卓一键设置等软件重新调节接入点参数;8,建议备份机身资料进行恢复出厂设置尝试;9,建议您抽空到附近联想授权维修站具体检测处理:///lenovo/wsi/station/servicestation欢迎您随时与我们联系或访问联想乐问吧(<a href="http.lenovomobile。移动数据无法联网的情况
Never stand still
主营:联想手机平板电脑
其他类似问题
为您推荐:
drm的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 数据库连接池超时时间 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信