SQL Server 2000向SQL Server 2008 R2推送数据

【文章摘要】
最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现。我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的都是SQL Server 2000,还都是运行在Windows XP上的,整个过程遇到了一些问题,也参考了一些文档,最终费了好多事才算搞定。

【文章索引】

  1. 配置分发服务器
  2. 配置发布数据库
  3. 配置订阅

【一、配置分发服务器】

SQLServer 2000的复制服务包括三个角色:发布服务器、分发服务器和订阅服务器,关系如图1所示。

图1

其中发布服务器(数据源服务器)负责将数据的改变(如快照或事务等)传送到分发服务器中,由分发服务器将这些数据的改变分发到订阅服务器(目标服务器)中。其中分发服务器可以与发布服务器配置在一台服务器中。

在配置分发服务器之前,首先需要打开SQL Server Agent服务并配置为自动启动。除此之外,对于数据库复制操作,SQL Server Agent不能使用系统账户登录,而必须为本地账户,可以在“登录”选项卡中,将“登录身份”设置为“此账户”,选择任一管理员账户即可(该管理员账户必须有密码)。

然后就可以配置分发服务器了。在SQL Server 2000中,打开企业管理器,然后选择已经注册的SQL Server服务器(此处为本机服务器),然后选择“工具”菜单,选择“向导”,出现如图2所示的对话框。

图2

选择“配置发布和分发向导”,确定后点击下一步出现如图3所示的对话框。

图3

如果需要在当前数据库服务器上创建分发服务器,选择第一项即可,否则选择第二项,然后点击下一步,出现如图4所示的对话框。

图4

这里需要注意的是,快照文件夹路径必须为网络路径,即\\计算机名\盘符默认共享\路径,默认系统已经填好该项,直接点击下一步即可。如果出现出错的情况,可以打开cmd,输入“net share”查看当前共享中是否有盘符的默认共享,如果没有的话,使用“net share c$”即可创建默认共享,如果还不行可以访问参考链接2。

成功后一路下一步即可配置好分发服务器。配置完分发服务器后,在注册的数据库服务器中就会出现“复制监视器一项”。

【二、配置发布数据库】

对于SQL Server 2000向2000推送数据,接下来的操作可以继续在企业管理器中完成,而对于SQL Server 2000向高版本SQL Server推送数据,则需要安装相应版本的SQL Server Management Studio,否则在最后一步连接订阅服务器时无法连接(出现“[sql-dmo]必须使用sql server2005 管理工具才能连接到此服务器”粗无)。我们的目标服务器安装的是SQL Server 2008 R2,所以需要安装SQL Server 2008 R2 Management Studio。

安装完成后首先连接到本机服务器,注意,服务器名称不能使用“(local)”或者IP,必须使用本机计算机名,登录方式使用SQL Server 身份认证。

要配置待发布的数据库,首先需要确保该数据库的“恢复模式”为“完整”,右键单击数据库,选择属性,然后选择“选项”,在“恢复模式”中设置为“完整”即可。

接下来就可以创建本地发布了,展开本机数据库,展开“复制”,在“本地发布”右键单击选择“新建发布”,如图5。

图5

点击下一步后选择待发布的数据库,点击下一步即进入选择发布类型的对话框,如图6所示。

图6

其中快照发布适合于表中无主键的数据表,每次复制时将数据全部复制过去;事务发布要求发布的数据表必须含有主键,否则无法复制。显然当数据量较大时,使用后者更好一些。如果数据库可以修改,建议将没有主键的表增加一个自增主键。这里由于源数据表中没有主键,也不能修改数据表结构,只能选择“快照发布”。点击下一步后出现选择要发布的内容的对话框,如果某个表不符合要求(如选择的事务发布但没有主键)则表名前出现禁止符号并且无法选择,如图7所示。

图7

再次点击下一步后出现自定义筛选数据的对话框,如果不需要筛选数据,点击下一步进入设置快照代理时间。快照代理即负责生成数据库的修改,可以设置为按天、周、月重复执行。这里每天推送一次,所以也只需要生成一次快照,如图8所示。如果打算设置完订阅后立即推送一次,可以选择勾选第一个选项。

图8

然后一路下一步即可完成发布的设置。

【三、配置订阅】

完成上述两步后就可以配置订阅了,订阅分为两种,分别是推式订阅和拉式订阅,前者由分发服务器连接订阅服务器,向订阅服务器推送数据;后者由订阅服务器连接分发服务器,向分发服务器拉取数据。所以在完成上一步后,“本地发布”中即出现了新创建的发布,右键单击选择“新建订阅”即可出现“新建订阅向导”对话框,点击下一步后已经选择了当前的订阅,继续点击下一步,出现订阅类型设置,如图9。

图9

这里选择“推式订阅”,然后点击下一步出现选择订阅服务器和订阅数据库的对话框,如图10所示。

图10

首先点击“添加 SQL Server 订阅服务器”添加订阅服务器,出现“连接到服务器”对话框,需要注意的是,订阅服务器也需要使用服务器名称登录。如果目标服务器与本地位于同一个局域网内,使用目标服务器名可以直接登录;否则则需要设置hosts文件,添加目标服务器IP与名称的对应关系才可以。登录方式同样使用SQL Server 身份认证。注意,修改完hosts重启之后才会生效。

添加完订阅服务器后,如果订阅服务器中有同名的数据库,则会自动显示在“订阅数据库”中。除此之外,订阅数据库需要登录账号有“db_owner”权限,否则不会显示在“订阅数据库”中,当然也可新建数据库。点击下一步后出现设置同步计划的对话框,如图11。

图11

代理计划可以设置为“连续运行”、“仅按需运行”或与创建发布时类似的自定义时间,其中“连续运行”指的是一直检查更新并推送到订阅服务器中,“仅按需运行”则需要手动执行,“<定义计划>”与创建发布时相同,可以设置重复执行的周期。如果每天只推送一次的话,可以设置在上一步快照代理执行时间之后的一个事件,设置完同步计划后下一步可以设置初始化时间,如图12。

图12

初始化时间可以设置为“立即”或“首次同步时”,如果上一步设置发布时选择的立即生成快照,同时这里选择“立即”初始化订阅的话,那么向导完成后会立即推送一次数据;否则将按预设的计划执行。

按上述设置完成后遇到了一个问题,在执行订阅代理时,出现“登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用”的错误。但是查看发现不论本机服务器还是订阅服务器均使用SQL Server 身份认证。后来进入SQL Server 2000的企业管理器,在本机服务器的“复制”中右键单击,选择“配置发布、订阅服务器和分发”,然后点击订阅服务器,在订阅服务器的列表中点击之前设置的订阅服务器右侧的“...”,发现登录方式为“Windows 身份认证”。重新将订阅服务器的登录配置为SQL Server 身份认证即可解决该问题。

【参考链接】

  1. Configuring Snapshot, Merge, and Transactional Replication:http://technet.microsoft.com/library/Cc917633
  2. windows默认共享的打开和关闭:http://www.cnblogs.com/Fooo/archive/2007/06/04/771021.html
时间: 2024-10-27 06:17:23

SQL Server 2000向SQL Server 2008 R2推送数据的相关文章

sql server 2000 和 sql server 2005 数据库连接字符串区别

//sql server 2000 <add name="Connection" connectionString="Data Source=.;Initial Catalog=DB;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/> //sql server 2005 <add name="Connection" connection

Tip:SCOM 2012 R2推送安装代理报错处理

======================================================================== 通过SCOM 2012 R2服务器控制台为域内的服务器推送安装代理的时候报错:客户端已从服务器断开.请调用ManagementGroup.Reconnect()以重新建立连接,如图. 处理方式:原因是这些无法推送代理的客户端已经被手动安装的代理,但是这些手动安装的代理并没有正确指向到SCOM服务器. 我们可以切换到管理--挂起的管理中进行查看.如图.

sql server 2000 对应 sql server 2005的row_number()、rank()、DENSE_RANK( )、ntile( )等用法

转自CSDN:http://blog.csdn.net/htl258/article/details/4006717 SQL server 2005新增的几个函数,分别是row_number( ).rank( ).,DENSE_RANK( ).ntile( )下面以实例分别简单讲解. 1.row_number( )         先来点数据,先建个表 SET NOCOUNT ONCREATE TABLE Person(FirstName VARCHAR(10),Age INT,Gender C

SQL SERVER 2000安装教程图文详解

注意:Windows XP不能装企业版.win2000\win2003服务器安装企业版一.硬件和操作系统要求 下表说明安装 Microsoft SQL Server 2000 或 SQL Server 客户端管理工具和库的硬件要求. 硬件 最低要求计算机 Pentium 166 MHz 或更高. 内存 (RAM)至少 64 MB,建议 128 MB 或更多.根据笔者的经验,内存容量可以和数据容量保持1:1的比例,这样可以更好的发挥其效能.硬盘空间需要约500MB的程序空间,以及预留500M的数据

SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600

今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.Sqlerror:该数据库是在运行版本10.50.2500的服务器上备份的,该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该备份的服务器上还原数据库,或者使用与此服务器兼容的备份.” 经过一番查证得知: 所谓的10.00.1600其实就是SQL 2008 10.50.1600其实就是

[SQL Server]: 比较各个SQL Server 版本

https://www.microsoft.com/zh-cn/server-cloud/products/sql-server/comparison.aspx 比较各个 SQL Server 版本 功能特色 SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 功能特色 性能 内存中 OLTP* SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2

navicat for sql server中文版|SQL Server管理及开发工具(Navicat for SQL Server)下载 v11.2.13

Navicat for SQL Server 是一套专为 Microsoft SQL Server设计的强大数据库管理及开发工具.Navicat for SQL Serve可以用于SQL Server 2000.2005.2008R2及SQL Azure,并支持大部份最新功能,包括触发器.函数及其他.Navicat 的功能足以符合专业开发人员的所有需求,但是对 SQL Server 的新手来说又相当容易学习.有了 Navicat 极完备的图形用户介面(GUI),让你可以简便地以安全且简单的方法创

sql server主动推送客户端更新数据

小谈需求: 最近工作上接到一个需求,做一个web展示数据的报表,最好能实时更新,不限制所用技术. 第一个问题:web服务器推送给浏览器新数据,一开始我想到的最快的最简单的方法就是 在web页面上js轮询了.因为我们的数据更新频率并不快. 后来觉得这种办法有点太土了. 或许长轮询更有效.  当然长轮询的技术很多了. java 的dwr,c#的 signalr.c#还可以同过异步请求来自己写长轮询. 遇到的第二个问题,就是数据库如何通知web服务器更新数据,下面便是sql server2008的推送

用live555将内网摄像机视频推送到外网server,附源代码

近期非常多人问,怎样将内网的摄像机流媒体数据公布到公网,假设用公网与局域网间的port映射方式太过麻烦,一个摄像机要做一组映射,并且不是每个局域网都是有固定ip地址,即使外网主机配置好了每个摄像机的映射地址,也有可能会由于宽带公网ip地址变动而导致配置无效. 再换一个应用场景,当我们的全部IP摄像机都部署在一个没有有线网络的环境里面,全部的流媒体数据都要通过3G/4G网络公布出去.那么就必须有这么一个服务单元,可以通过先拉后推的方式,将内网的流媒体数据,推送并公布到外网的流媒体server上去: