提供个2005的.SQL Server 2005数据库镜像简介自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器、传输日志,以及备份和重新存储了——但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复。数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。Edgewood Solutions 的Greg Robidoux 回答了我们一些SQL Server 2005中有关数据库镜像的常见问题,同时还解释了为什么你现在就应该开始测试这个内建的功能来看看它最终是否会给你的环境带来好处。什么是数据库镜像?Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问;它只用在错误恢复的情况下。因为是在SQL Server 2005中新引入的特性,这个功能只能用在,这个版本的软件中。在某种程度上说,它是复制和日志传输的混合体:你所有的事物都在事物级别(复制)上移动(日志传输)到你的数据库的一个镜像拷贝上,同时减少了你在实现日志传输或者复制的时候可能会面临的问题。复制包括大量的移动部分,并且如果你的数据库计划经常改变的话,要保证你的复制运行得流畅也是困难重重。对于日志传输,为了保证同步,同样需要实现很多的处理,例如创建备份、拷贝备份,以及备份重存。如果有一个进程崩溃了,整个处理过程就崩溃了。数据库镜像的工作方式是什么?Robidoux :要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“基本的”,第二个服务器被称作“镜像的”。基本数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。除了基本和镜像之外,你还可以引入另一个可选的组件,名为“证人”。证人数据库是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。证人服务器只有在你想实现自动错误恢复的时候才需要用到。实现的方式是什么?Robidoux :数据库镜像提供了三种实现的方式。根据你想要用什么方式来进行错误恢复处理来进行选择。高可用性:这个操作模式选项允许你在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个证人服务器。高保护:这个选项可以让你在两台服务器上同步事物写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到证人服务器。高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到证人服务器。时刻记住将你的数据自动恢复到第二个拷贝才是数据库镜像的真正好处。因此,大多数的实现可能都是使用的高可达性方式。其他的选项仍然提供了内建的错误恢复过程,但是前提是你在发生错误的时候对进行自动的错误恢复怀有极大的兴趣。数据库镜像可以工作在哪几个版本上?Robidoux :数据库镜像只能在标准版、开发版和企业版的SQL Server 2005中找到。基本服务器和镜像服务器的SQL Server运行实例都需要是这几个版本。证人服务器可以运行在任何版本的SQL Server上。此外,还有其他的一些特性是SQL Server的开发版和企业版上特有的,但是标准版具有最基本的功能。总结现如今,SQL Server 2005的数据库镜像已经关掉了,但是所有的功能仍然存在。数据库镜像可以通过使用检索标志来打开——但是微软现在并不支持这个功能了,所以不要在你的产品环境中运行它。数据库镜像将会在本年年末完全实现并被支持。要打开这个特性并开始你的测试,你可以看看以前的专家知识解答。微软正在寻找额外的反馈,所以你可以看看它是否可以作为你的SQL Server环境的候选。

解决方案 »

  1.   

    大家辛苦了,呵呵,但是都没有回答出关键问题 服务器网络地址 "TCP://arrow:5022" 无法访问或不存在如何解决两台机器, 2003 + sql server 2008,同一个网段, 同一个工作组(注意,没有域),做数据库镜像测试,无论如何都不成功,错误提示如下: 服务器网络地址 "TCP://arrow:5022" 无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行 其中, arrow 就是主体数据库服务器的名称,奇怪,怎么自己连自己都回不通的,  
    telnet arrow 5022 可以连接上的,用 netstat -an 也可以看到 5022 是处于监听状态,同时防火墙是关闭的,真想不通是什么问题 
      

  2.   

    现在又是另外一个问题了,现在的提示是 服务器网络地址 "TCP://jyh:5022" 无法访问或不存在jyh 是镜像服务器,什么都没改,郁闷ing
      

  3.   

    我问下PAUL NIELSON,他正在写<SQLSERVER2008 宝典>,不过,得把问题翻译成英文.呵呵
      

  4.   

    如果要用 Windows 身份验证, 则至少还要保证:
    1. 在两台服务器上建立一个名称和密码完全一样的 Windows 用户
    2. 设置 SQL Server 服务的启动用户为该用户. 建议使用SQL Server的配置管理器去做这个设置, 配置管理器会为所设置的用户授予启动 sql server 所需的一切权限.(如果使用操作系统的服务去配置的话, 这个授权需要手工完成, 比较痛苦)
    3. 完成步骤2后, 重新启动 sql server 服务, 此时, sql server中应该用服务启动用户对应的 sql 登录名称, 如果没有, 手工建立
    4. 授予步骤3的 sql 登录对你的数据库镜像端点的 connect 权限
      

  5.   

    如果要用 Windows 身份验证, 则至少还要保证: 
    1. 在两台服务器上建立一个名称和密码完全一样的 Windows 用户 
    2. 设置 SQL Server 服务的启动用户为该用户. 建议使用SQL Server的配置管理器去做这个设置, 配置管理器会为所设置的用户授予启动 sql server 所需的一切权限.(如果使用操作系统的服务去配置的话, 这个授权需要手工完成, 比较痛苦) 
    3. 完成步骤2后, 重新启动 sql server 服务, 此时, sql server中应该用服务启动用户对应的 sql 登录名称, 如果没有, 手工建立 
    4. 授予步骤3的 sql 登录对你的数据库镜像端点的 connect 权限
    很感谢,邹建老大的回复,再问一下,望老大再次指点1、我的两台机器都是一样的用户, administrator 的密码也是相同的
    2、启动帐号是 administrator3 、不是很明白什么意思4、授予步骤3的 sql 登录对你的数据库镜像端点的 connect 权限  
       这个如何设置呢 ?? 
      

  6.   

    2. 启动帐号是指 mssqlserver 服务的, 不是指登录 windows 的
    3. 在 sql server 的安全--登录中检查
    4. GRANT CONNECT ENDPOINT::镜像端点名称 TO 登录名