SQL Server 2005 是微软5年来具有里程碑性质的企业级数据库产品。在高可用技术、额外的备份和恢复功能,以及复制增强上的投资使企业能够构建和部署高可用的应用系统。SQL Server 2005在高可用上的创新有:数据镜像,故障转移集群,数据库快照和增强的联机操作,这有助于最小化宕机时间和确保企业的关键系统可用。下面我们将介绍数据库镜像技术。
一、数据库镜像
SQL Server 2005 可通过数据库镜像来支持热备功能。数据库镜像允许事务日志以连续的方式从主服务器传递到备份服务器上。当主服务器出现故障时,见证服务器几秒钟内即可检测到主服务器发生了故障,并能立即让备份服务器接受数据库连接。数据库镜像工作在标准服务器硬件下,不需要特定的存储或控制器。图1显示了数据库镜像的基本配置。
实战 SQL Server 2005数据库镜像_第1张图片
图 1: 数据库镜像的基本配置
二、与传统的集群技术比较
故障转移集群是一个高可用解决方案,它使用Microsoft Clustering Services 创建容错虚拟服务器,一旦数据库服务器宕机,便可提供快速故障转移。在SQL Server 2005中, SQL Server 分析服务,通知服务,与SQL Server复制现在都已支持故障转移集群。集群节点的最大数量也增加到8个,SQL Server 故障转移集群现已是一个完整的容错服务器解决方案。
        从表1中我们可以看出数据库镜像的优点是故障切换时间短,对服务器要求低,无需存储盘柜,所以服务器之间的距离没有要求,甚至可以把服务器一台放在北京,另一台放在上海。缺点是客户端需要支持ADO.NET 2.0或SQL Native Client,老的应用程序需要升级,需要见证服务器才能实现自动故障转移。
实战 SQL Server 2005数据库镜像_第2张图片
三、部署数据库镜像
     安装好3台Windows Server 2003企业版服务器,先加入到域中,名字为NODE1.ftyy.com,NODE2.ftyy.com和NODE3.ftyy.com,然后依次安装SQL Server 2005 Developer Edition、Developer Edition、和SQL Express。SQL Server 2005
    在每台服务器上均使用SQL Server 外围应用配置器,开放允许通过TCP/IP和NAME访问数据库,这是Server SQL 2005增强安全性的措施之一。如图2
实战 SQL Server 2005数据库镜像_第3张图片
图2
1.在NODE1上创建一个数据库,名字为testdb_01,数据库的恢复模式必须使用完整模式。
create database testdb_01
GO
2.完整备份testdb_01数据库。
BACKUP DATABASE testdb_01
TO DISK = 'C:\testdb_01.bak'
WITH FORMAT
GO
3.将备份文件拷贝到NODE2的C盘,恢复备份,数据库名必须和NODE1一致,本例为testdb_01,而且必须使用参数NORECOVERY。
RESTORE DATABASE testdb_01
    FROM DISK = 'C:\testdb_01.bak'
    WITH NORECOVERY
GO
4.在NODE1上运行SQL Server Management Studio——鼠标右键testdb_01数据库——在属性里单击镜像选择页。如图3
实战 SQL Server 2005数据库镜像_第4张图片
图3
单击配置安全性——弹出配置数据库安全向导界面,下一步——包括见证服务器,下一步——在以下服务器上保存安全性配置,下一步——主体服务器实例:NODE1,端口和端点名称默认,下一步。如图4。
实战 SQL Server 2005数据库镜像_第5张图片
图4
镜像服务器实例:NODE2,端口和端点名称默认,下一步——见证服务器实例:NODE3,端口和端点名称默认,下一步——服务账户,下一步——完成。
选择带自动故障转移功能的同步,单击开始镜像。
稍候,镜像成功,在这里可以手动故障转移,测试数据库镜像。如图5。
实战 SQL Server 2005数据库镜像_第6张图片
图5
四、客户端连接
我在Windows XP SP2  .NET Framework 2.0系统上测试了Sybase Powerbuilder 10.2 Build 8100开发工具,ADO.NET 2.0使用下面的字符串可以连接到数据库,并随故障转移自动切换数据库,访问不受任何影响。
// Profile SQL Server 2005
SQLCA.DBMS = "ADO.Net"
SQLCA.LogPass = <*********>
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.SqlClient',DataSource='node2.ftyy.com;Failover Partner=node1.ftyy.com;Initial Catalog=testdb_01',Database='testdb_01'"
 五、小结
SQL Server 2005数据库镜像技术为企业通过提供了一个更安全、可靠和高效的数据管理平台,并降低了投入成本,大大减少了应用程序宕机时间,提高了系统的可用性,使之能不断拓展的企业应用空间,为企业带来新的商业应用机遇。
六、FAQ
1. A:单击开始镜像后,提示1418错误,镜像服务器不存在或无法访问。
Q:先加入域,再安装数据库,用域账户启动数据库服务,使用配置数据库安全向导时用域管理员账户验证连接。
2.A:PB10.2在连接数据库时提示Failed to creat a instance of type DbRoutine
 Q:将X:\Program Files\Sybase\Shared\PowerBuilder\PBDATA100.dll拷贝到X:\Program Files\Sybase\PowerBuilder 10.0\目录下