我想让远程的数据库复制到本地上,每十分钟更新一次,如果本地数据库没有记录新添加,如果远程数据库更改的数据,本地也更改,如何制作,望各位高手指点,谢谢

解决方案 »

  1.   

    一、准备工作,如果完成则可跳过。1、内网DB服务器作为发布服务器,外网DB服务器作为订阅服务器。发布服务器和订阅服务器上分别创建Windows用户jl,密码jl,隶属于administrators,注意要保持一致。2、发布服务器上创建一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy,设置用户jl,权限为完全控制。3、确定发布服务器和订阅服务器的数据库autoweb保持一致。4、在发布服务器和订阅服务器的SQL Server中创建用户登陆名jl,作为发布数据库autoweb的拥有者(设置为dbo_owner和public)。用户名和密码都一致。5、打开服务(控制面板---管理工具---服务)---右击SQLSERVER AGENT---属性---登录---选择“此帐户”---输入或选择第一步中创建的WINDOWS 用户jl,---“密码“中输入该用户密码jl6、开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务。7、设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定。8、发布服务器和订阅服务器互相注册步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选“SQL Server验证“-----用户名(sa) 密码------创建组(也可不建)-----完成。对于只能用IP,不能用计算机名的,为其注册服务器别名二、发布和订阅如下工作都在发布服务器上配置,包括发布和订阅。快照发布和订阅1、 选择 复制 节点,右键本地发布 ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹”----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型下一步―――选择要发布的数据库autoweb中的表,将b(B)开头的表去掉,V开头的表去掉,c_开头的表去掉,t_开头的表去掉,剩下的表作为快照发布到订阅服务器上(单向传输)根据情况决定执行发布的间隔时间,如图每天每20分钟执行一次。下一步快照代理安全性,设置如图,连接到发布服务器用户jl,密码jl.-------填写发布名称。2、 选择 复制 节点,右键本地订阅,选择发布服务器-------选择订阅方式(选择推送订阅))-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。至此完成快照发布和订阅。合并发布和订阅1、选择如下三个表作为合并发布的对象,用于双向通讯根据情况决定执行发布的间隔时间,如图每天每20分钟执行一次。2、 选择 复制 节点,右键本地订阅,选择发布服务器-------选择订阅方式(选择推送订阅))-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。至此完成合并发布和订阅-------------------------------------------------------------------主要是要注意权限的问题,一般做发布/订阅,建议你做如下准备工作:1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户我的电脑--控制面板--管理工具--计算机管理--用户和组--右键用户--新建用户--建立一个隶属于administrator组的登陆windows的用户2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:我的电脑--D:\ 新建一个目录,名为: PUB--右键这个新建的目录--属性--共享--选择"共享该文件夹"--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限--确定3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)开始--程序--管理工具--服务--右键SQLSERVERAGENT--属性--登陆--选择"此账户"--输入或者选择第一步中创建的windows登录用户名--"密码"中输入该用户的密码4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)企业管理器--右键SQL实例--属性--安全性--身份验证--选择"SQL Server 和 Windows"--确定5.在发布服务器和订阅服务器上互相注册企业管理器--右键SQL Server组--新建SQL Server注册...--下一步--可用的服务器中,输入你要注册的远程服务器名--添加--下一步--连接使用,选择第二个"SQL Server身份验证"--下一步--输入用户名和密码--下一步--选择SQL Server组,也可以创建一个新组--下一步--完成6.对于只能用IP,不能用计算机名的,为其注册服务器别名(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)开始--程序--Microsoft SQL Server--客户端网络实用工具--别名--添加--网络库选择"tcp/ip"--服务器别名输入SQL服务器名--连接参数--服务器名称中输入SQL服务器ip地址--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号
      

  2.   

    用链接服务器!
    --查询A表不在B表中存在的记录
    select a.*
      from #a a(nolock)
      where not exists(select 1 from #b where lshh=a.lshh and hw=a.hw and spid=a.spid)
      
    --查询B表不在A表中存在的记录  
    select a.*
      from #b a(nolock)
      where not exists(select 1 from #a where lshh=a.lshh and hw=a.hw and spid=a.spid)
    再写一个触发器!
      

  3.   

    1.直接写程序同步
    2.sql复制
      

  4.   

    1:触发器
    2:job每10分钟调用dts
    3:同步复制
      

  5.   

    --查询A表不在B表中存在的记录
    select a.*
      from #a a(nolock)
      where not exists(select 1 from #b where lshh=a.lshh and hw=a.hw and spid=a.spid)
      
    --查询B表不在A表中存在的记录  
    select a.*
      from #b a(nolock)
      where not exists(select 1 from #a where lshh=a.lshh and hw=a.hw and spid=a.spid)
      

  6.   

    发在csdn 上百度谷歌收入快
      

  7.   

    ----2000同步复制
    http://blog.csdn.net/fredrickhu/archive/2009/09/20/4573837.aspx----2005同步复制
    http://blog.csdn.net/fredrickhu/archive/2009/09/20/4573845.aspx