数据库复制——
从SQL Server 2000向SQL Server 2005迁移数据库
服务器环境如下:
GOCEAN-LEE\SQL2000:SQL Server 2000
GOCEAN-LEE\SQL2005:SQL Server 2005
Windows Server 2003 sp2
系统用户GOCEAN-LEE\Administrator,GOCEAN-LEE\SQLAgentUser,密码皆为password,同隶属于Administrators
配置过程如下:
1.设置SQL Server Agent服务启动账户(不执行这一步也可以,不过建议执行此步骤)
设置GOCEAN-LEE\SQL2000和GOCEAN-LEE\SQL2005两个SQL Server 实例的SQL Server Agent服务的启动账户设置为GOCEAN-LEE\SQLAgentUser,并将其高设置为自动启动。
(图1.设置SQL Server 2005 Agent服务的启动账户)
(图2.设置SQL Server 2000 Agent服务的启动账户)
2.建立数据库快照文件共享文件夹
建立一个共享文件夹(如c:\shareCopy),以存放并共享耍要发布的数据库的快照文件,同时设置GOCEAN-LEE\SQLAgentUser账户对该文件夹有完全控制权限,如下图
(图3.设置共享文件夹属性)
3.确定发布服务器、分发服务器、订阅服务器
发布服务器、分发服务器和订阅服务器是SQL SERVER 复制数据库时的三个服务器角色,三个的作用分别是:发布服务器将需要同步的服务器发布出来;订阅服务器把从发布服务器所发布的数据库更新到自己的数据库上;而分发服务器则起一个中转站的作用,将发布服务器发布的服务整理,各个订阅服务器直接从分发服务器上订阅发布服务器的更新。
注意:不同用户采取的复制方法可能略有不同,必须保证分发服务器的SQL 版本高于或等于发布服务器的SQL版本,订阅服务器的SQL版本低于或等于分发服务器(这是在本工作场景中决定分发服务器的一个重要原因)
终上所述,将GOCEAN-LEE\SQL2000作为发布服务器,GOCEAN-LEE\SQL2005作为分发服务器和订阅服务器
4 . 在SQL Server 2000中建立分发数据库
连接上GOCEAN-LEE\SQL2000,建立数据库publishDB,并建立一个表productInfo,T-SQL代码如下:
USE master
GO
CREATE DATABASE publishDB
GO
USE publishDB
GO
IF OBJECT_ID(‘productInfo’,’U’) IS NOT NULL
DROP TABLE productInfo
GO
CREATE TABLE productInfo
(
productID uniqueidentifier ROWGUIDCOL NOT NULL,
productName char(10) NULL,
CONSTRAINT PK_productInfo PRIMARY KEY(productID)
)
GO
连接上GOCEAN-LEE\SQL2005,建立数据库publishDB,不用建立数据表。
将GOCEAN-LEE\SQLAgentUser添加到GOCEAN-LEE\SQL2000和GOCEAN-LEE\SQL2005登录用户,并将其设置为两个publishDB数据库的public角色和db_owner角色。如下图所示:
(图4.创建数据库及数据表)
5. 配置分发服务器
SQL Server Management Studio连接到GOCEAN-LEE\SQL2005,右击“复制”节点执行如下操作:
(图5.选择”配置分发…”)
(图6. )
(图7.)
(图8.输入之前建立的共享文件夹)
(图9. 建立分发服务器时将自动创建默认数据库distribution,可以自定义以上信息)
(图10. 默认只有GOCEAN-LEE\SQL2005一个发布服务器,可以通过右下角的添加按钮添加GOCEAN-LEE\SQL2000为发布服务器,这一步相当重要,如果不执行这一步而直接在2000中执行发布操作将报错误信息,即会报如下图所示的错误)
(图11. 建立与GOCEAN-LEE\SQL2000的连接)
(图12. 已经将GOCEAN-LEE\SQL2000和GOCEAN-LEE\SQL2005同时配置为分发服务器)
(图13. 要求输入请求订阅时的密码)
(图14. )
(图15. 分发服务器配置成功)
6. 在GOCEAN-LEE\SQL2000中发布数据库
连接上GOCEAN-LEE\SQL2000,步骤如下:
(图16. 选择“新建发布”)
(图17. 新建发布向导)
(图18. 添加GOCEAN-LEE\SQL2005作为分发服务器)
(图19. 已将GOCEAN-LEE\SQL2005添加分发服务器)
(图20. 输入建立分发服务器时设立的密码)
(图21. 选择要发布的数据库,不能发布系统数据库)
(图22. 选择合适的发布类型)
(图23. 选择数据库中需要发布的对象)
(图24)
(图25. 选择合适的生成数据库快照的时间调度)
(图26)
(图27. 输入发布数据库的名称)
(图28. 数据库发布成功)
(图29. 在”复制”à”本地发布”节下可以看到发布的数据库)
7. 在GOCEAN-LEE\SQL2005中订阅数据库
连接上GOCEAN-LEE\SQL2005,执行如下操作:
(图30. 选择“新建订阅”)
(图31. 新建订阅向导)
(图32. 添加GOCEAN-LEE\SQL2000作为发布服务器)
(图33. 已将GOCEAN-LEE\SQL2000添加为发布服务器)
(图34)
(图35. 选择或者新建数据库,作为订阅数据库)
(图36. 点击省略号设置代理安全性)
(图37. 设置代理安全性)
(图38. 已设置完分发代理安全性)
(图39. 设置同步计划)
(图40. 设置初始化订阅)
(图41)
(图42. 完成订阅向导)
(图43. 已成功建立数据库订阅,可以在”复制”à”本地订阅”节点下看到所订阅的数据库)
(图44. 已同步到GOCEAN-LEE\SQL2005数据库publishDB中的表dbo.productInfo及其数据)
至此,已经完成了从SQL Server 2000数据库向SQL Server 2005数据库复制数据的操作,可以通过向2000数据库中更新数据以查看是否已成功配置数据库复制,结果表明当更新GOCEAN-LEE\SQL2000中数据时,在短时间内则将更新的数据同步复制到GOCEAN-LEE\SQL2005中。
Jason Lee
2008.03.19于Gocean