ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:68KB ,
资源ID:7658203      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7658203.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数据库增量同步.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据库增量同步.doc

1、数据库增量同步(二台SQL Server服务器的数据库之间增量传输数据) 数据库增量同步(MS SQL Server) ------------------------------------------------------------------------------------------------------------------------------------------------------------------ --支持原创,转载时请保留下面,以供大家加我MSN,增强交流,共同学习. --姜庭华 msn: jaimejth@ --博客: 数据库增

2、量同步必须具备以下条件 一.每张表必须有主键 二.每张表必须有一个最后更新日期栏位(时间类型).(也就是说.在程序及业务处理中,如果对某条数据做了更新就必须更新最后更新日期栏位.这在现有很多系统都有这个栏位,主要便于后台管理.) 执行步骤: 一.首先建立表sys_tran_info,这张表是传输配置的基本表. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sys_tran_info]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

3、 drop table [dbo].[sys_tran_info] CREATE TABLE [dbo].[sys_tran_info] ( [id] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , --自增列 [source_server] [varchar] (50) NULL , --源服务器(链接服务器名或本机为空) [source_db] [varchar] (50) NULL , --源数据库名称 [target_server] [varchar] (50) NULL , --目的

4、服务器(链接服务器名) [target_db] [varchar] (50) NULL , --目的数据库名称 [table_name] [varchar] (100) NOT NULL , --需要同步的表 [is_close] [int] NOT NULL , --是否关闭该记录 [is_tranall] [int] NOT NULL , --是否传输该表整个表记录 [tag_column] [char] (100) NULL , --标志列,一般是时间类型列,记录最后更新日期,如果不

5、输入,则是每次都传全表数据。(主要用此列做为增量更新的标志) [is_complete] [int] NULL, --是否完成。当同步时,会同步更新此栏位。确定该行该表是否同步完成。 [complete_date] datetime null ) ON [PRIMARY] ALTER TABLE [dbo].[sys_tran_info] WITH NOCHECK ADD CONSTRAINT [DF_sys_tran_info_is_disable] DEFAULT (0) FOR [is_close], CONSTRAINT [DF_s

6、ys_tran_info_is_alldata] DEFAULT (1) FOR [is_tranall], CONSTRAINT [DF_sys_tran_info_is_increment] DEFAULT (0) FOR [is_complete] */ 二.配置表sys_tran_info中的信息,将需要传输同步的表插入此表中。 (当然该表的中数据你可以手动一条一条的增加,以下只是提供批量增加的方法) 1.先批量将有主键的表的数据插入。 insert into sys_tran_info(source_server,source_db,target_server,ta

7、rget_db,table_name,is_close,is_tranall,is_complete) select distinct '[192.168.0.1]', --源链接服务器名(如果以下存储过程的参数@is_local为1,此外为空) '[erp_db]', --源数据库名 '[192.168.0.2]', --目的链接服务器名 '[erp_db_bak]', --目的数据库名 a.name as table_name, 1, 1, 0 from sysobjects a join syscolumns b ON a.id = b.id w

8、here a.xtype = 'U' and exists(SELECT 1 FROM sysobjects WHERE xtype = 'PK' AND name IN (SELECT name FROM sysindexes WHERE indid IN (SELECT indid FROM sysindexkeys WHERE id = b.id AND colid = b.colid))) 2.注意,这样批量插入数据是没有配置标志列tag_column,所以根据表sys_tran_info中栏位is_tranalle,默认是1传输全部,只有为0

9、时则会根据标志列增量传输。 需要手动根据具体情况配置(例如:有的最后更新日期栏位是update_date)你可以根据你的实际情况配置最后更新时间的栏位,因为你的名字也许不会取名为update_date。 三.创建以下存储过程。(跟表sys_tran_info创建在一个数据库下面) create procedure usp_tran_data @is_local int=1, @begin_date datetime, @is_continue int=0 as declare @id numeric(18,0), @source_s

10、erver varchar(50), @source_db varchar(50), @target_server varchar(50), @target_db varchar(50), @table_name varchar(100), @is_tranall int, @tag_column varchar(100), @exec_sql varchar(8000), @begin_date_str varchar(30), @error_t

11、xt varchar(100) set @begin_date_str=convert(varchar(30),@begin_date,120) set @exec_sql='' if @is_continue=0 update sys_tran_info set is_complete=0,complete_date=null declare table_cursor CURSOR FAST_FORWARD FOR select id, source_server, source_db, target_server, target_db, table_name

12、 is_tranall, tag_column from sys_tran_info where is_close=0 and is_complete in (select case when @is_continue=1 then 0 when @is_continue=0 then 1 end union select case when @is_continue=0 then 0 end ) order by id OPEN table_cursor FETCH NEXT FROM table_cursor INTO @id,@

13、source_server,@source_db,@target_server,@target_db,@table_name,@is_tranall,@tag_column WHILE @@FETCH_STATUS = 0 begin if @is_tranall=1 begin waitfor delay '00:00:03' set @exec_sql='execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'' truncate table ' +@target_db+'.

14、dbo.'+@table_name+'''' execute (@exec_sql) if @@error<>0 goto tran_error set @exec_sql= ' insert into '+@target_server+'.'+@target_db+'.dbo.'+@table_name+' select * from '+case when @is_local=1 then '' else @source_server+'.' end+@source_db+'.dbo.'+@table_name+' WITH (NOLOCK)'

15、execute(@exec_sql) if @@error<>0 goto tran_error end else begin if @tag_column is null continue waitfor delay '00:00:03' --取主键关系 set @exec_sql= ' declare @master_key varchar(100)'+ ' declare @mkey_sql varchar(1000)'+

16、 ' declare @mkey varchar(500)'+ ' set @mkey_sql='''''+ ' set @mkey='''''+ ' declare master_key_cursor cursor fast_forward for'+ ' select b.name AS field'+ ' from '+@target_server+'.'+@target_db+'.dbo.sysobjects a'+ ' join '+@t

17、arget_server+'.'+@target_db+'.dbo.syscolumns b ON a.id = b.id '+ ' where a.name='''+@table_name+''''+' and '+ ' a.xtype = ''U'''+ ' and exists(SELECT 1'+ ' FROM '+@target_server+'.'+@target_db+'.dbo.sysobjects c'+ ' WHERE c.xtype = ''PK'''+

18、 ' AND c.name IN (SELECT name '+ ' FROM '+@target_server+'.'+@target_db+'.dbo.sysindexes e'+ ' WHERE e.indid IN (SELECT indid'+ ' FROM '+@target_server+'.'+@target_db+'.dbo.sysindexkeys f'+ 'WHERE f.id = b.id AND f.colid = b.colid))) '+

19、 ' OPEN master_key_cursor'+ ' FETCH NEXT FROM master_key_cursor INTO @master_key'+ ' WHILE @@FETCH_STATUS = 0'+ ' begin'+ ' set @mkey_sql=@mkey_sql+'' s.''+@master_key+''=d.''+@master_key+'' and'''+ ' set @mkey=@mkey+@master

20、key+'','''+ ' FETCH NEXT FROM master_key_cursor INTO @master_key'+ ' end'+ ' CLOSE master_key_cursor'+ ' DEALLOCATE master_key_cursor'+ ' set @mkey_sql=left(@mkey_sql,len(@mkey_sql)-3)'+ ' set @mkey=left(@mkey,len(@mkey)-1)'

21、 ' select * into #temp_date from '+case when @is_local=1 then '' else @source_server+'.' end+@source_db+'.dbo.'+@table_name+' WITH (NOLOCK) where '+isnull(@tag_column,'')+'>='''+@begin_date_str+''''+ ' if not exists(select 1 from #temp_date)'+ ' return '+

22、 ' declare @exe_sql varchar(2000)'+ ' declare @filed varchar(100)'+ ' set @exe_sql='''''+ ' if exists(select b.name'+ ' from '+@target_server+'.'+@target_db+'.dbo.sysobjects a'+ ' join '+@target_server+'.'+@target_db+'.dbo.syscolumns b ON a.id =

23、b.id '+ ' where a.name='''+@table_name+''''+' and '+ ' a.xtype = ''U'''+ ' and b.colstat= 1)'+ ' begin '+ ' select @filed=b.name'+ ' from '+@target_server+'.'+@target_db+'.dbo.sysobjects a'+ ' join '+@target_server+'.'+@target_d

24、b+'.dbo.syscolumns b ON a.id = b.id '+ ' where a.name='''+@table_name+''''+' and '+ ' a.xtype = ''U'''+ ' and b.colstat= 1'+ ' set @exe_sql=''execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'''' sp_configure ''''''''allow update'

25、''''''',''''''''1'''''''' RECONFIGURE WITH OVERRIDE '''''''+ ' execute(@exe_sql)'+ ' set @exe_sql=''update '+@target_server+'.'+@target_db+'.dbo.'+'syscolumns set colstat=0 where colstat=1 and id in (select id from '+@target_server+'.'+@target_db+'.dbo.'+'sysobjects

26、where name='''''+@table_name+''''') and name=''''''+@filed+'''''''''+ ' execute(@exe_sql)'+ ' set @exe_sql=''execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'''' sp_configure ''''''''allow update'''''''',''''''''0'''''''' RECONFIGURE WITH OVERRIDE ''''

27、'''+ ' execute(@exe_sql)'+ ' set @exe_sql=''execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'''' select * into '+@table_name+'_jaime from '+@target_db+'.dbo.'+@table_name+''''''''+ ' execute(@exe_sql)'+ ' set @exe_sql=''

28、execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'''' drop table '+@target_db+'.dbo.'+@table_name+''''''''+ ' execute(@exe_sql)'+ ' set @exe_sql=''execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'''' exec sp_rename '''''''''+@target_db+'

29、dbo.'+@table_name+'_jaime '''''''','''''''''+@table_name+''''''''''+''''''''+ ' execute(@exe_sql)'+ ' set @exe_sql=''execute '+@target_server+'.'+@target_db+'.dbo.'+'sp_executesql N'''' ALTER TABLE '+@table_name+' WITH NOCHECK ADD CONSTRAINT pk_'+@table_name+'_pk PRI

30、MARY KEY CLUSTERED (''+@mkey+'')'+''''''''+ ' execute(@exe_sql)'+ ' end '+ ' set @exe_sql='''+ ' delete '+@target_server+'.'+@target_db+'.dbo.'+@table_name+ ' from '+@target_server+'.'+@target_db+'.dbo.'+@table_name+' d ,

31、temp_date s '+ ' where ''+@mkey_sql'+ ' exec (@exe_sql'+')'+ ' insert into '+@target_server+'.'+@target_db+'.dbo.'+@table_name+' select * from #temp_date '+ ' drop table #temp_date ' execute(@exec_sql) if @@error<>0

32、 begin goto tran_error end end update sys_tran_info set is_complete=1,complete_date=getdate() where id=@id FETCH NEXT FROM table_cursor INTO @id,@source_server,@source_db,@target_server,@target_db,@table_name,@is_tranall,@tag_column end CLOSE t

33、able_cursor DEALLOCATE table_cursor return tran_error: CLOSE table_cursor DEALLOCATE table_cursor set @error_txt='表: '+@table_name+' 传输失败' RAISERROR (@error_txt,16, 1) return Sql Server 数据库字典 --1.SqlServer2000 数据库字典--表结构.sql SELECT TOP 100 PERCENT --a.id, CASE WHEN a

34、colorder = 1 THEN d.name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明, a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识, CASE WHEN EXISTS (SELE

35、CT 1 FROM dbo.sysindexes si INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN dbo.sysobjects so ON so.name = si.name AND so.xtype = 'P

36、K' WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主键, b.name AS 类型, a.length AS 长度, COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数, CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空,

37、 ISNULL(e.text, '') AS 默认值, ISNULL(g.[value], '') AS 字段说明, d.crdate AS 创建时间, CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改时间 FROM dbo.syscolumns a LEFT OUTER JOIN dbo.systypes b ON a.xtype = b.xusertype INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xty

38、pe = 'U' AND d.status >= 0 LEFT OUTER JOIN dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND g.name = 'MS_Description' LEFT OUTER JOIN dbo.sysproperties f ON d.id = f.id AND f.smallid = 0 AND

39、 f.name = 'MS_Description' ORDER BY d.name, a.colorder --SqlServer2005 数据库字典--表结构.sql SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明, a.colorder AS 字段序号,

40、a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识, CASE WHEN EXISTS (SELECT 1 FROM dbo.sysindexes si INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN

41、 dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK' WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主键, b.name AS 类型, a.length AS 长度, COLUMNPROPERTY(a.id, a.name,

42、'PRECISION') AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数, CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空, ISNULL(e.text, '') AS 默认值, ISNULL(g.[value], '') AS 字段说明, d.crdate AS 创建时间, CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更

43、改时间 FROM dbo.syscolumns a LEFT OUTER JOIN dbo.systypes b ON a.xtype = b.xusertype INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0 LEFT OUTER JOIN dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN sys.extended_properties g ON a.

44、id = g.major_id AND a.colid = g.minor_id AND g.name = 'MS_Description' LEFT OUTER JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0 AND f.name = 'MS_Description' ORDER BY d.name, 字段序号 经在sql server 2005上测试, 只要将一个SQL的最后两行替换如下,即可正确运行. dbo.dtproper

45、ties g ON a.id = g.id AND a.colid = g.objectid LEFT OUTER JOIN dbo.dtproperties f ON d.id = f.id AND f.objectid = 0 2. SqlServer数据库字典--索引.sql SELECT TOP 100 PERCENT --a.id, CASE WHEN b.keyno = 1 THEN c.name ELSE '' END AS 表名, CASE WHEN b.keyno = 1 THEN a.name ELSE '' END A

46、S 索引名称, d.name AS 列名, b.keyno AS 索引顺序, CASE indexkey_property(c.id, b.indid, b.keyno, 'isdescending') WHEN 1 THEN '降序' WHEN 0 THEN '升序' END AS 排序, CASE WHEN p.id IS NULL THEN '' ELSE '√' END AS 主键, CASE INDEXPROPERTY(c.id, a.name, 'IsClustered') WHEN 1 THEN '√' WHEN 0

47、 THEN '' END AS 聚集, CASE INDEXPROPERTY(c.id, a.name, 'IsUnique') WHEN 1 THEN '√' WHEN 0 THEN '' END AS 唯一, CASE WHEN e.id IS NULL THEN '' ELSE '√' END AS 唯一约束, a.OrigFillFactor AS 填充因子, c.crdate AS 创建时间, c.refdate AS 更改时间 FROM dbo.sysindexes a INNER JOIN dbo.sysindexk

48、eys b ON a.id = b.id AND a.indid = b.indid INNER JOIN dbo.syscolumns d ON b.id = d.id AND b.colid = d.colid INNER JOIN dbo.sysobjects c ON a.id = c.id AND c.xtype = 'U' LEFT OUTER JOIN dbo.sysobjects e ON e.name = a.name AND e.xtype = 'UQ' LEFT OUTER JOIN dbo.sysobjects p

49、 ON p.name = a.name AND p.xtype = 'PK' WHERE (OBJECTPROPERTY(a.id, N'IsUserTable') = 1) AND (OBJECTPROPERTY(a.id, N'IsMSShipped') = 0) AND (INDEXPROPERTY(a.id, a.name, 'IsAutoStatistics') = 0) ORDER BY c.name, a.name, b.keyno 3. SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql SELECT DISTINCT TOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype, CASE o.xtype WHEN 'C' THEN 'CHECK 约束' WHEN 'D' THEN '默认值或DEFAULT约束' WHEN 'F' THEN 'FOREIGNKEY约束' WHEN 'L' THEN '日志' WHEN 'FN' THEN '标量函数' WHEN 'IF' THEN '内嵌表函数' WHEN 'P' T

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服