关于SQL Server的复制技术使用 50fredrickhu]

发布时间:2016-12-7 1:50:02 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"关于SQL Server的复制技术使用 50fredrickhu]",主要涉及到关于SQL Server的复制技术使用 50fredrickhu]方面的内容,对于关于SQL Server的复制技术使用 50fredrickhu]感兴趣的同学可以参考一下。

我正在研究数据库的复制技术问题。 复制的整个流程是搞通了,也能够正常进行复制。 但是我有个问题:新建的对象(表、视图、存储过程)的复制不能自动完成,必须要人工干预。 我要管理的数据库有几十个,个数还在不断的增长,如果每个在升级之后,都要人工去干预, 工作量太大,请问大侠们,在复制这种方式下,有没有办法让新增的对象能够自动完成复制呀, 或者是通过sql语句,让其自动完成的,只要不要太多的需要人工一步一步去操作的方式解决, 就可以啦

用JOB??作业?

企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)" --"数据库"选择执行命令的数据库 --"命令"中输入要执行的语句:    ...............................................                   --确定 --"调度"项 --新建调度 --"名称"中输入调度名称 --"调度类型"中选择你的作业执行安排 --如果选择"反复出现" --点"更改"来设置你的时间安排为一天一次 然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.

數據庫同步,鏡像.

可以利用触发器同步,在触发器中通过系统表获取数据库中的表、视图等对象,然后同步。 触发器同步参照: --==================================================== --发布/订阅的效果最好.    --自己写触发器同步的实时性和可控制性最好. --==================================================== 如果只是简单的数据同步,可以用触发器来实现.下面是例子:           --测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:test           --创建测试表,不能用标识列做主键,因为不能进行正常更新      --在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器      if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[test]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)      drop   table   [test]           create   table   test(id   int   not   null   constraint   PK_test   primary   key      ,name   varchar(10))      go           --创建同步的触发器      create   trigger   t_test   on   test      for   insert,update,delete      as      set     XACT_ABORT   on      --启动远程服务器的MSDTC服务      exec   master..xp_cmdshell   'isql   /S"xz"   /U"sa"   /P""   /q"exec   master..xp_cmdshell   ''net   start   msdtc'',no_output"',no_output           --启动本机的MSDTC服务      exec   master..xp_cmdshell   'net   start   msdtc',no_output           --进行分布事务处理,如果表用标识列做主键,用下面的方法      BEGIN   DISTRIBUTED   TRANSACTION      delete   from   openrowset('sqloledb','xz';'sa';'',test.dbo.test)      where   id   in(select   id   from   deleted)      insert   into   openrowset('sqloledb','xz';'sa';'',test.dbo.test)      select   *   from   inserted      commit   tran      go           --插入数据测试      insert   into   test      select   1,'aa'      union   all   select   2,'bb'      union   all   select   3,'c'      union   all   select   4,'dd'      union   all   select   5,'ab'      union   all   select   6,'bc'      union   all   select   7,'ddd'           --删除数据测试      delete   from   test   where   id   in(1,4,6)           --更新数据测试      update   test   set   name=name+'_123'   where   id   in(3,5)           --显示测试的结果      select   *   from   test   a   full   join      openrowset('sqloledb','xz';'sa';'',test.dbo.test)   b   on   a.id=b.id   

引用 4 楼 ai_li7758521 的回复:可以利用触发器同步,在触发器中通过系统表获取数据库中的表、视图等对象,然后同步。  触发器同步参照:  SQL code--==================================================== --发布/订阅的效果最好.    --自己写触发器同步的实时性和可控制性最好. --==================================================== 如果只是简单的数据同步,可以用触发器来实现.下面是例子:           --测试环境:SQL2000,远程主机名:xz… 学习

建立作业

请问楼主,我现在也要用复制,目前流程还没有走通,能介绍一下吗?谢谢。我的情况是:1服务器+n客户端。客户端数据定期向服务器汇总,客户端所用的表都一样,只是添加内容不同,想采用合并复制,不知道如何实现,在建立发布是,提示要加入uniqueidentifier列,这个有影响吗?没有看懂,呵呵。期盼你的回复。

没办法通过sql语句,修改复制这种模式中需要处理的项目吗?

能提供你做的复制的操作步骤吗?我现在想做,正在学习。谢谢!

怎么没有回复啊!

学习

学习

上一篇:企业商业智能解决方案 20liujin230124]
下一篇:sqlserver 2005如何实现类似模板安装,类似于sqlserver2000的setup.iss安装方式 20fredrickhu]

相关文章

相关评论