SQL 2000怎么向SQL 2008 R2推送数据?88bf必发娱乐

0. 环境

  1. 无域环境
  2. 发布服务和分发服务器同一台主机
角色 主机名 IP 发布名 发布库名/订阅库名
发布服务器 Server1 192.168.1.100 test3 db1
分发服务器(与发布服务器同一实例) Server1 192.168.1.100
订阅服务器 Client1 192.168.1.200 db1

SQL 2000怎么向SQL 2008 R2推送数据?

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

  【一、配置分发服务器】

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

88bf必发娱乐 1

  图1

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

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

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

88bf必发娱乐 2

  图2

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

88bf必发娱乐 3

  图3

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

88bf必发娱乐 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。

88bf必发娱乐 5

  图5

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

88bf必发娱乐 6

  图6

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

88bf必发娱乐 7

  图7

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

88bf必发娱乐 8

  图8

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

  【三、配置订阅】

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

88bf必发娱乐 9

  图9

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

88bf必发娱乐 10

  图10

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

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

88bf必发娱乐 11

  图11

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

88bf必发娱乐 12

  图12

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

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

http://www.bkjia.com/Mysql/879608.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/879608.htmlTechArticleSQL 2000怎么向SQL 2008 R2推送数据?
最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他服务器向我们服务器…

1. 修改host文件

在发布服务器和订阅服务器都修改C:\Windows\System32\drivers\etc文件,加入IP和主机名。如果是请求订阅,则发布服务器不用修改也要可以;如果是推送请求,则必需设置。因为SQL
Server复制不能通过IP进行相关的设置。

2. 创建快照文件夹及相应的用户和权限

比如快照文件在发布服务器的D:\ReplData下。在发布服务器和订阅服务器创建相同的Windows用户(
如果不想发布服务器创建新的Windows用户,则需要在发布服务器开启Guest用户),如repl_admin,并加入各自的administrator组中,并设置密码不能过期,不能修改密码。设置D:\ReplData文件对于新建的用户repl_admin完全读写权限,并设置共享此文件夹。

这里,可能会有疑问为什么repl_admin已经是administrator组的用户,对D:\ReplData文件夹是读取权限的,为什么还要设置repl_admin完全读写权限?后来测试在生成快照文件时,无法在文件夹\\Server1\ReplData写入。后面第4步会提到\\Server1\ReplData这个文件夹。

3. 设置SQL Server Agent的启动用户

在发布服务器设置SQL Server Agent的启动用户为repl_admin(最好是在SQL
Server Configuration
Manager进行设置),并重启Agent。同样,在订阅服务器也做同样的步骤。注意,重启Agent可能会影响SQL
Job的计划任务,生产环境上请检查重启带来的影响。

4. 在发布服务器新建发布和分发

在SSMS上,根据向导一步一步创建新的发布。如果没有分发服务器,在向导中,会进行创建。(分发的属性)设置快照文件为\\Server1\ReplData。最后可以生成创建发布的SQL脚本,可以保存起来,以后再重启创建,或是其他服务器需要创建发布,只需要修改一下脚本,再执行即可。

为什么不直接设置D:\ReplData?其实是可以的,但默认使用\\Server1\ReplData这个文件的话,在订阅端默认也是读取这个快照文件夹\\Server1\ReplData,这样比较方便。

当然,可以手动再修改(可以单独修改发布的快照文件夹路径,也可以修改订阅时的快照文件夹路径),不过还是建议使用分发的设置的默认文件的网络路径格式。

也可以使用FTP或其他方法把快照文件复制到订阅服务器做初始化即可。SQL
Server复制也支持备份数据库的方式进行订阅的初始化。

在第1步中,默认快照文件夹也是可以放到真正的网络盘上,而不是发布服务器上。考虑到直接写到网络盘,但需要考虑这可能会造成网络影响,如果在生成很大的快照过程中,造成网络阻塞,甚至中断,对生产造成影响。

5. 在订阅服务器新建订阅

在SSMS上,根据向导一步一步创建新的订阅(以请求订阅pull
subcription为例)。在Distribution Agent Security这一步,设置是这样的:

  • Run under the SQL Server Agent service account
  • Connect to the Distribution: Using the following SQL Server login
    这里使用了发布服务器的sa用户和密码。当然也可以另外创建专门的SQL
    Server复制账号来连接。
  • Connect to the Subscriber: By impersonating the process account

如果是推送push subcription的话,第2,3个选项是相反的。即Using the
following SQL Server login填写的是订阅服务器的SQL
Server账号,让分发服务器有权限推送数据到订阅服务器。

6. 设置添加新项目不初始化整个快照

在发布服务器经常会新创建表或其他数据库对象,如存储过程或函数等,如果要把这些新的项目加入到已经存在的订阅中时,需要初始化这些项目。但默认的设置是初始化整个快照所有项目的。这对于大的快照来说,成本很高。

下面设置只初始化新添的项目。

use db1;
GO

EXEC sys.sp_changepublication 
    @publication = 'test3', 
    @property = N'immediate_sync', 
    @value = N'false'
GO

EXEC sys.sp_changepublication 
    @publication = 'test3', 
    @property = N'allow_anonymous',
    @value = N'false'
GO

然后再启动快照代理即可对新添加的项目生成快照。
(右键选择发布,选择“查看快照代理状态”——“启动”)

相当于运行以下脚本:

EXEC sys.sp_startpublication_snapshot
@publication = 'test3'
go