精华内容
下载资源
问答
  • sql发布 订阅

    千次阅读 2009-03-25 09:41:00
    经测试,在订阅server上如果手工update一条记录,再在发布server上执行这一update语句,不影响发布订阅。 在订阅server上如果手工delete一条记录,再在发布server上执行这一delete语句,会导致发布订阅停止,解决...

     
    经测试,在订阅server上如果手工update一条记录,再在发布server上执行这一update语句,不影响发布订阅。
    在订阅server上如果手工delete一条记录,再在发布server上执行这一delete语句,会导致发布订阅停止,解决办法是在订阅server上手工补该条记录,发布订阅则自动恢复正常。
    在订阅server上如果手工insert一条记录,会提示主健不能重复错误,无法执行。

    同步过程

    一、准备工作,如果完成则可跳过。

    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,

    ---“密码“中输入该用户密码jl

    6、开启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的端口,取消选择"动态决定端口",并输入对应的端口号

    复制的概念
      
      复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
      
      SQL复制的基本元素包括
      
      出版服务器、订阅服务器、分发服务器、出版物、文章
      
      SQL复制的工作原理
      
      SQL SERVER主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器
      
      SQL SERVER复制技术类型
      
      SQL SERVER提供了三种复制技术,分别是:
      
      1、快照复制(呆会我们就使用这个)
      2、事务复制
      3、合并复制
      
      只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。
      
      第一先来配置出版服务器
      
      (1)选中指定[服务器]节点
      (2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令
      (3)系统弹出一个对话框点[下一步]然后看着提示一直操作到完成。
      (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)
      
      第二创建出版物
      
      (1)选中指定的服务器
      (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个对话框
      (3)选择要创建出版物的数据库,然后单击[创建发布]
      (4)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
      (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器
      (6)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
      (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
      
      第三设计订阅
      
      (1)选中指定的订阅服务器
      (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]
      (3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。
      (4)单击[完成]。完成订阅操作。
      
      完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:/Program Files/Microsoft SQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表—

    一个手工同步的方案
      
      --定时同步服务器上的数据
      
      --例子:
      
      --测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test
      
      --服务器上的表(查询分析器连接到服务器上创建)
      
      create table [user](id int primary key,number varchar(4),name varchar(10))
      go
      
      --以下在局域网(本机操作)
      
      --本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录
      
      if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
      drop table [user]
      GO
      create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)
      go
      
      --创建触发器,维护state字段的值
      
      create trigger t_state on [user]
      after update
      as
      update [user] set state=1
      from [user] a join inserted b on a.id=b.id
      where a.state is not null
      go
      
      --为了方便同步处理,创建链接服务器到要同步的服务器
      
      --这里的远程服务器名为:xz,用户名为:sa,无密码
      
      if exists(select 1 from master..sysservers where srvname='srv_lnk')
      exec sp_dropserver 'srv_lnk','droplogins'
      go
      exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','xz'
      exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa'
      go
      
      --创建同步处理的存储过程
      
      if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
      drop procedure [dbo].[p_synchro]
      GO
      create proc p_synchro
      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 srv_lnk.test.dbo.[user]
      where id not in(select id from [user])
      
      --同步新增的数据
      
      insert into srv_lnk.test.dbo.[user]
      select id,number,name from [user] where state is null
      
      --同步修改的数据
      
      update srv_lnk.test.dbo.[user] set
      number=b.number,name=b.name
      from srv_lnk.test.dbo.[user] a
      join [user] b on a.id=b.id
      where b.state=1
      
      --同步后更新本机的标志
      
      update [user] set state=0 where isnull(state,1)=1
      --COMMIT TRAN
      go
      
      --创建作业,定时执行数据同步的存储过程
      
      if exists(SELECT 1 from msdb..sysjobs where name='数据处理')
      EXECUTE msdb.dbo.sp_delete_job @job_name='数据处理'
      exec msdb..sp_add_job @job_name='数据处理'
      
      --创建作业步骤
      
      declare @sql varchar(800),@dbname varchar(250)
      select @sql='exec p_synchro' --数据处理的命令
      ,@dbname=db_name() --执行数据处理的数据库名
      exec msdb..sp_add_jobstep @job_name='数据处理',
      @step_name = '数据同步',
      @subsystem = 'TSQL',
      @database_name=@dbname,
      @command = @sql,
      @retry_attempts = 5, --重试次数
      @retry_interval = 5 --重试间隔
      
      --创建调度
      
      EXEC msdb..sp_add_jobschedule @job_name = '数据处理',
      @name = '时间安排',
      @freq_type = 4, --每天
      @freq_interval = 1, --每天执行一次
      @active_start_time = 00000 --0点执行
      go

    展开全文
  • 发布订阅通信模式的实时性能分析与评估 详细介绍如何使用SQL Server 的发布订阅功能
  • 一般如果发布服务器和订阅服务器使用一台服务器的话,不会出现读取文件的问题。除非权限问题。 如果发布服务器和订阅服务器属于多台服务器的话。 订阅之后,会报错,具体错误在发布服务器的复制——本地发布——...

    一般如果发布服务器和订阅服务器使用一台服务器的话,不会出现读取文件的问题。除非权限问题。

    如果发布服务器和订阅服务器属于多台服务器的话。

    订阅之后,会报错,具体错误在发布服务器的复制——本地发布——复制监视器上会查到具体错误信息。

    1:由于出现操作系统错误 3,进程无法读取文件“C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\ReplData\unc\WIN-20160708DAT_TEXT_CSS_CSS\20180828085104\A_2.sch”。 (源: MSSQL_REPL,错误号: MSSQL_REPL0)

    网上有很多解决方法:如:文件共享 ,设置相同用户的登录名。。。这些都是解决方法

    但是有一点:我们要理解这个问题的本质,

    1. 找不到文件,是指找不到发布服务器的文件还是订阅服务器的文件???  答案:订阅服务器文件
    2. 既然订阅服务器的文件找不到,我们把发布服务器的文件拷到订阅服务器相对路径即可。注意:是问题所描述的路径:C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\ReplData\unc\
    3. 这样问题我们就解决了。也不用设置文件共享了。

     

    关于网上说的文件共享的解决方法我就不多说了,有很多资料可以查到。。。

    展开全文
  • ----------查看发布订阅配置信息sp_helpdistributor gosp_helpdistributiondbgo---------清除历史发布订阅sp_removedbreplication 'dbname' --------查看链接服务器select * from sys.servers----------查看服务器...
    ----------查看发布订阅配置信息
    
    sp_helpdistributor
    go
    sp_helpdistributiondb
    go
    ---------清除历史发布订阅
    sp_removedbreplication 'dbname'
     
    --------查看链接服务器
    select * from sys.servers
    ----------查看服务器实例名称
    select @@servername
    USE master
    --------开启数据库的可合并发布
    EXEC sp_dboption 'dbname', 'merge publish', 'TRUE'
    -------开始数据库的复制功能
    EXEC sp_dboption 'dbname', 'published', 'TRUE'
    ---------查看已注册服务器实例
    exec sp_helpserver
    展开全文
  • SQL Server 发布订阅

    2018-04-25 11:31:00
    SQL Server 发布订阅:SQL Server 2008 数据库同步的具体方式参照.
  • Sql Server 订阅发布

    千次阅读 2016-08-29 11:20:00
    发布订阅分为两个步骤:1、发布。2订阅。首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅。发布可以发布一张表的部分数据,也可以对整张表进行发布,还可以是存储...

    数据库同步方式有很多种,这里利用数据库发布和订阅的方式来完成数据库的同步技术.

    发布订阅分为两个步骤:1、发布。2订阅。首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅。发布可以发布一张表的部分数据,也可以对整张表进行发布,还可以是存储过程等等

    创建发布

    在lis生产库上创建发布,发布的具体过程如下:

    1、展开SQL Server 2008 服务器下的 【复制】 节点,会发现有【本地发布】和【本地订阅】两个节点,右击【本地发布】节点,选择【新建发布】: 


    2、如果服务器第一次进行发布设置,会弹出【发布向导】对话框,选择【发布数据库】:

     

     3、点击【下一步】会询问我们【选择发布类型】的方式,这里使用事物发布的方式:


     

     4、点击【下一步】会询问我们【选择发布对象】的方式,这里我们选择全部的对象,包括表,存储过程,试图等:


     5、点击【下一步】会询问我们【是否创建快照】:


    一般什么选择立刻创建快照,那么数据库会创建一个当前数据库快照,并将快照复制到订阅数据库,用来初始化数据.

     

    创建订阅

    在灾备库上创建订阅,具体创建过程如下:

    1.在复制->本地订阅->中右击新建订阅


    2.点击【下一步】会让我们选择【发布服务器】,这里我们选择刚刚我们创建的发布服务器:


    3.点击【下一步】会让我们选择【分发代理位置】,这里我们选择【推送订阅】:

    其中推送订阅:当生产有事务的时候自动将事物推送给订阅数据库

    其中请求订阅:表示订阅数据库定时想发布数据库请求传送事务


    4.点击【下一步】会让我们选择【订阅数据库】,这里我们选择【rmlis6】:


    这里表示将发布服务器的数据订阅到本地的哪个数据库中

    5.点击【下一步】会让我们选择【代理安全】,这里我们选择输入用户名和密码

     

    6.点击【下一步】会让我们选择【同步计划】,这里我们选择【连续运行】:

     

    7.点击【下一步】会让我们选择【初始化订阅】,这里我们选择【立即初始化】:

     

    8.点击【下一步】我们完成订阅的创建

     

     

    点击完成之后,发布数据库就会将刚刚创建好的快照复制到订阅数据库以完成数据的初始化,初始化结束后即进入实时同步.


    日常运维监控

    发布端监控

    发布端的监控在本地发布,右击启动复制监控:


    点击发布服务器,可以查看当前发布性能,滞后时间:


    订阅端监控

    在本地订阅右击查看同步状态:

     

    点击监控,同样可以查看实时的数据同步:


     

    注意点:

    在创建订阅的时候,需要连接到发布服务器,这里需要将ip和主机名的映射关系写到hosts文件中.

    展开全文
  • Sql Server 2008发布订阅

    2017-05-25 09:07:06
    Sql Server 2008发布订阅
  • sqlserver发布订阅

    2018-12-07 16:49:48
    sqlserver自带的发布订阅可以帮助实现数据库迁移,主从同步,读写分离等,而且配置简单,这里简单介绍下流程 配置前需要安装sqlserver的复制功能,如果没有安装可以通过安装教程添加该功能 1.配置分发服务器  ...
  • SqlServer发布订阅
  • SQLServer数据库发布订阅操作文档
  • SQL发布订阅

    2016-06-12 10:25:50
    利用SQL自带的发布订阅实践多个数据的数据同步。 该文档包括发布订阅的步骤,注意点,该方案已经在项目中实践完成。 如果有不明白的地方,可以QQ在线指导。
  • SQLServer发布订阅使用,小白教程
  • SQLserver发布订阅

    2015-05-20 14:31:20
    上篇中说了通过SQL JOB的方式对数据库的同步,这一节作为上一节的延续介绍通过发布订阅的方式实现数据库之间的同步操作。发布订阅份为两个步骤:1、发布。2订阅。首先在数据源数据库服务器上对需要同步的数据进行...
  • 发布订阅分为两个步骤:1、发布。2订阅。首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅。发布可以发布一张表的部分数据,也可以对整张表进行发布,还可以是存储...
  • sqlserver数据库同步操作截图
  • 微软 SQL SERVER 2008 利用订阅发布方式实现数据库订阅,简单易懂。
  • SQLSERVER2008订阅发布

    2015-04-17 15:02:25
    用于sqlserver发布订阅,达到双机数据库数据同步的目的。
  • SQLServer发布订阅

    2012-10-23 11:11:24
    使用SQLServer的发布订阅实现两台数据库之间的数据同步
  • 发布订阅的步骤
  • SQL Server 2008订阅发布
  • SQLSERVER发布订阅
  • 原文:SqlServer发布订阅错误收集目录 1. SqlServer发布订阅错误收集 1.1. Message:脚本对于表“dbo.table”失败。 1.1.1. 错误消息 1.1.2. 处理方法 1.2. 由于出现操作系统错误 3,进程无法读取文件D:\\...
  • 资源名称:sqlserver高级:发布订阅服务器配置手册 资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • sql2008+ftp发布订阅方式同步数据
  • SqlServer发布订阅

    2018-07-02 18:14:00
    今天我们说的是sqlserver主从数据库的数据同步,采用sqlserver发布订阅功能来实现。接下来开始配置,我们是在本地测试的。 首先在需要在本地创建俩数据库Demo1和Demo2,并在Demo1中建一个表student。然后找到下面...
  • SQLSERVER数据库中使用发布订阅方式进行数据同步,使用所有的SQLSERVER数据库,从SQLSERVER2000到SQLSERVER2005/SQLSERVER2008/SQLSERVER2008R2
  • 实现SQL2008 发布订阅的配置,非常详细
  • MicrosoftSQL Server 提供了三种复制类型。 每种复制类型都适合于不同应用程序的要求。 根据应用程序需要,可以在拓扑中使用一种或多种复制类型: 快照复制 事务复制 合并复制 为了帮助您选择...
  • Sql订阅发布注意事项

    2016-03-28 11:37:00
    1.做订阅发布的2台Sql服务器最好要版本一致,不能出现类似如下情况: Sql2008 R2[发布] - Sql2008[订阅]; Sql2008 R2[发布] - Sql2012[订阅] 2.订阅发布理论上必须 订阅发布数据库 都要在 同一个 局域网,但也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,769
精华内容 13,907
关键字:

sql发布订阅