INF:常见问题 - SQL Server 2000 - 日志传送

文章翻译 文章翻译
文章编号: 314515
本文的发布号曾为 CHS314515
展开全部 | 关闭全部

本文内容

概要

本文讨论日志传送的多个方面并回答与 SQL Server 2000 Enterprise Edition 中日志传送的设置、安全性、监视、角色更改和删除等方面有关的常见问题。

更多信息

SQL Server 2000 中的日志传送提供了通过使用 SQL Server 维护计划向导建立热备份解决方案的方法。可以将来自数据库的事务日志备份自动传送到不同的服务器并应用于待机数据库。您可以使用待机数据库执行只读操作(取决于数据库日志恢复时的状态)。

日志传送设置

Q1:设置日志传送需要哪个版本的 SQL Server?

A1:以下矩阵显示参与日志传送的三个组件所需的 SQL Server 的版本:

收起该表格展开该表格
组件所需的 SQL Server 版本
主服务器Enterprise 或 Developer Edition
辅助服务器Enterprise 或 Developer Edition
监视服务器任意版本


Q2:在开始通过 SQL Server 企业管理器设置日志传送之前需要进行哪些操作?

A2:以下是在 SQL Server 2000 中启动日志传送之前必须执行的操作的列表。

  • 在域帐户下启动 SQL Server 和 SQL Server Agent 服务或按传递安全性配置相关的主服务器、辅助服务器和监视服务器(有关更多信息,请参阅此标题中的第三个问题)。
  • 您可以从安装有 SQL Server 企业管理器 (SEM) 的任何计算机设置日志传送。您必须通过 SEM 在要设置日志传送的主服务器计算机上注册所有准备充当辅助服务器的 SQL Server 的计算机,这些计算机上的 SQL Server 发挥服务器的功能。
  • 在主服务器上为事务日志备份创建一个文件夹。您可以在主计算机上的任何位置创建此文件夹。放置该文件夹的磁盘上必须具有足够的可用磁盘空间以保存至少一天的事务日志备份量。具体所需的空间量不易预测,因为这取决于数据库事务日志备份的大小和频率。Microsoft 建议为进行日志传送的每个数据库都创建一个不同的文件夹。
  • 共享您在上一步中创建的文件夹。确保向在参与日志传送的服务器上用于启动 SQL Server 和 SQL Server Agent 服务的 Microsoft Windows NT 帐户授予了 READ 和 CHANGE 权限。如果您使用传递安全性,则将这些权限授予用于启动 SQL Server 相关服务的本地 Windows NT 帐户。
  • 在将进行日志传送的数据库上删除或禁用所有事务日志备份作业。这包括所有第三方备份作业。
Q3:是否需要在域帐户(而不是本地 Windows NT 帐户)下启动与 SQL Server 相关的服务?

A3:除非对 SQL Server 进行了配置使其作为虚拟服务器与 Microsoft 群集服务一起工作,否则可以配置 SQL Server 服务在本地 Windows NT 帐户下启动。出于此目的,您可以使用 Windows NT 传递安全性。按照下面的步骤配置传递安全性:
  • 在主、辅助和监视计算机上使用相同的名称和密码创建 Windows NT 帐户。
  • 在所有计算机上配置与 SQL Server 相关的服务在这些 Windows NT 帐户下启动。
如果对 SQL Server 进行了配置使其作为虚拟服务器与 Microsoft 群集服务一起运行,则必须在域帐户下启动 SQL Server 服务。即使 SQL Server 是虚拟服务器,当 SQL Server 计算机在域中时,Microsoft 也建议您使用域帐户启动服务。在域帐户下启动与 SQL Server 相关的服务具有以下好处:
  • 更改 SQL Server 启动帐户的密码不会导致日志传送作业失败。若要成功继续传递安全性情况下的日志传送,所有服务器必须同时更改 Windows NT 启动帐户的密码。
Q4:可以从哪里设置日志传送?

A4:在 SQL Server 企业管理器中,右键单击要设置日志传送的数据库,然后单击维护计划。在欢迎对话框上,单击下一步。单击以选择将事务日志传送到其他 SQL Servers(日志传送)复选框。该复选框向 SQL Server 维护计划向导表示此数据库必须进行日志传送。您可以从安装有 SQL Server 企业管理器的客户机执行此步骤。

Q5:为什么维护计划对话框中日志传送复选框有时候是灰显的?

A5:该复选框灰显的原因如下:
  • 可能为"维护计划"选择了多个数据库。
  • 所选的数据库不在完全恢复批量记录恢复模型中。
  • 服务器上未安装 SQL Server 2000 Enterprise Edition。
Q6:为什么在执行初始配置时日志传送设置失败?

A6:有多个原因可能导致日志传送设置失败。现在至少有一个已知问题会导致此状况。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
298743 BUG:All Changes May Not be Rolled Back when Log Shipping Maintenance Wizard Fails(日志传送维护向导失败时无法回滚所有更改)
Q7:表架构和数据库文件结构更改是否会被传播到辅助服务器?

A7:在 SQL Server 2000 中,所有表架构和数据库文件结构更改都是需进行记录的操作。但是,如果将一个新 NDF 或 LDF 文件添加到主数据库,则在加载紧接在将数据库文件添加到主数据库之后执行的事务日志备份时,事务日志恢复作业将失败。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
286280 INF:Effect of Database File Additions or Deletions on Database Recovery(数据库恢复时数据库文件添加或删除的结果)
Q8:是否可以对日志传送进行脚本撰写?

A8:不能,当前不能对日志传送进行脚本撰写。设置日志传送所支持的唯一方法是通过本节第四个问题中介绍的向导。

Q9:是否可以在多个域中的服务器间设置日志传送?

A9:可以。可以在位于不同域的多个服务器间设置日志传送。完成此操作有两种方法:

  • 使用传递安全性。在主服务器、辅助服务器和监视服务器上配置 Windows NT 帐户使用相同的名称和密码。在所有服务器上配置与 SQL Server 相关的服务在这些帐户下启动,并在设置日志传送时使用 SQL 身份验证连接到监视服务器。-或者-

  • -或者-使用常规 Windows NT 安全性。您必须配置这些域使用双向信任关系。可以在域帐户下启动与 SQL Server 相关的服务。主服务器和辅助服务器上的作业可以使用 SQL 身份验证或 Windows 身份验证连接到监视服务器。所有其他的要求与本节第二个问题中解释的要求相同。
Q10:是否可以配置主服务器和辅助服务器以使用 SQL 身份验证连接到监视服务器?

A10:可以。主服务器和辅助服务器可以使用 Windows 或 SQL 身份验证连接到监视服务器。Microsoft 建议使用 Windows 身份验证来实现此目的。但是,如果无法使用 Windows 身份验证,则可以使用 SQL 身份验证。SQL Server 将使用设置日志传送时指定的密码在主服务器、辅助服务器和监视服务器上创建"log_shipping_monitor_probe"帐户(如果该帐户尚不存在)。如果将 SQL 身份验证用于日志传送,则您必须在主服务器、辅助服务器和监视服务器上配置 SQL Server 以使用混合模式身份验证。

日志传送安全注意事项

Q1:如果在设置日志传送之前使"guest"帐户不可用,同时想让我的辅助数据库处于待机状态,如何允许用户具有访问辅助数据库的权限(强制实施与主服务器相同的安全模型)?

A1:不管任何原因都不能从 SQL Server 删除"guest"帐户。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
315523 PRB:Removal of Guest Account May Cause Handled Exception Access Violation in SQL Server(删除 Guest 帐户可能导致 SQL Server 中发生经处理的访问违规异常)
但是,出于安全方面的考虑,您可以使"guest"帐户对于某些数据库不可用。因为辅助数据库处于待机状态,所以不能使用 sp_change_users_login 存储过程对登录进行适当的重新映射。若要在待机数据库上强制实施相同的安全模型,请使用与主服务器相同的安全标识符 (SID) 值在辅助服务器上创建登录。有关使用相同的 SID 值创建登录的更多信息,请阅读以下 Microsoft 知识库文章:
303722 INF:How to Grant Access to SQL Logins on a Standby Database When "guest" User Is Disabled(如何在禁用"guest"用户时授予 SQL 登录对待机数据库的访问权限)
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
321247 HOW TO:Configure Security for Log Shipping(为日志传送配置安全性)
Q2:sp_resolve_logins 有什么作用?

A2:在日志传送角色更改时,sp_resolve_logins 存储过程需要主服务器中 syslogins 系统表的 BCP 文件。此存储过程将该 BCP 文件加载到临时表中并依次通过每个登录以验证具有相同名称的登录是否存在于辅助服务器的 syslogins 系统表中。然后,它检查此登录的 SID 值是否存在于辅助数据库的 sysusers 系统表中。最后,它检查辅助数据库的 sysusers 系统表中的 SID 值是否不同于辅助数据库的 syslogins 表中的 SID 值。如果这些检查的结果都满足要求,则 sp_resolve_logins 存储过程为该登录运行 sp_Change_users_login 存储过程,并修复辅助数据库的 sysusers 系统表中的 SID。只有当在初始化日志传送之后在主服务器上创建了新登录并且未在辅助服务器上用相同的 SID 创建这些相同的登录(在 Microsoft 知识库文章 Q303722 中有所介绍)时才需要执行此存储过程。

Q3:sp_resolve_logins 存储过程成功运行;但是它未对辅助服务器上的安全设置执行预期的修改。为什么?

A3:sp_resolve_logins 存储过程需要主服务器 syslogins 系统表的最新 BCP 文件。同时必须已经在辅助服务器上创建了这些登录。如果满足这两个条件,则 sp_resolve_logins 存储过程将对辅助数据库中的 sysusers 系统表执行修改。

Q4:在执行角色更改之前,是否需要运行传输登录 DTS 任务并同时运行 sp_resolve_logins 存储过程?

A4:是的。您必须使用传输登录任务确保登录存在于辅助服务器上的 syslogins 系统表中。这不能保证用户可以使用辅助数据库(如果辅助数据库是以待机模式加载的)。如果用户在执行日志传送角色更改之前必须使用辅助数据库,则参阅本节中的第一个问题。

Q5:sp_resolve_logins 存储过程是否可以用于 SQL Server 中的远程登录?

A5:不能。sp_resolve_logins 存储过程只用于一般登录。必须在辅助服务器上手动创建任何远程登录。

日志传送监视

Q1:即使在用事务日志备份更新了辅助服务器之后还将触发"日志传送备份和失去同步"警告。是否存在这种可能?

A1:是的。即使正在更新辅助数据库,也有可能触发该警告。如果将警告阈值设置为一个值,该值小于备份和复制或恢复作业之间时间的两倍,则有可能引发警告。如果警告被引发并且该阈值接近或小于后续备份和复制或恢复作业之间时间的两倍,则继续操作并增加该阈值。

Q2:为什么事务日志备份未能在辅助服务器上完成恢复?

A2:事务日志备份只有在一个连续的序列中,才能对它们进行恢复。此序列是由 RESTORE HEADERONLY 命令返回的 LastLSNFirstLSN 字段确定的。如果 LastLSN 字段和相连的事务日志备份中的FirstLSN 字段显示相同的数字,则它们在该序列中不可恢复。事务日志备份失序有多个原因。最常见的原因包括:
  • 主服务器上存在多余的事务日志备份作业,导致序列被破坏。
  • 数据库中执行了未记录事务日志的操作。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    272093 INF:Effects of Nonlogged and Minimally Logged Operations on Transaction Log Backup and Restore Process(未记录事务日志或简单记录事务日志的操作对事务日志备份和恢复进程的影响)
  • 数据库的恢复模型可能在事务日志备份间发生了切换。
  • 主服务器上的数据转换服务 (DTS) 任务可能会引起此问题。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    308267 BUG:DTS Copy Objects Task (DMO) Breaks Transaction Log Backup Chain By Switching Recovery Mode to Simple During Transfer(DTS 复制对象任务 (DMO) 在传输过程中将恢复模型切换为简单模型,从而破坏了事务日志备份链)
Q3:在何处查找有关执行备份、复制或恢复操作时所发生错误的信息?

A3:若要获得有关特定日志传送对的更多信息,请按照下列步骤操作:

  1. 打开 SQL Server 企业管理器,然后连接到监视服务器。
  2. 管理下,单击日志传送监视器。在右边的窗格中,将显示所有日志传送对(已进行了配置,将此服务器作为监视服务器)。如果日志传送对不可见,则右键单击日志传送监视器(在管理下),然后单击刷新
  3. 右键单击需要其信息的日志传送对,然后单击查看备份历史记录以查看备份作业的历史记录。
  4. 右键单击日志传送对,然后单击查看复制/恢复历史记录以查看复制和恢复作业的历史记录。
  5. 右键单击日志传送对,然后单击属性以查看当前日志传送状态、源和目标的警告状态。
Q4:文件名 first_file_000000000000.trn 是否指示复制或恢复作业不成功?

A4:每次运行复制和恢复作业都至少与一个文件关联。默认情况下,如果这两个作业中任何一个作业的某次运行中未复制或恢复任何文件,则 SQL Server 将 first_file_000000000000.trn 放置在文件名字段中。但这并不一定表示出现了问题。例如,第一次在辅助服务器上运行复制或恢复作业,可能没有任何文件可用于复制或恢复。在这种情况下,first_file_000000000000.trn 并不一定表示错误。但是,在某些情况下,这可能确实表示出现了问题。有关更多信息,请阅读以下 Microsoft 知识库文章:
292586 PRB:Backup, Copy, and Load Job Information Is Not Updated on the Log Shipping Monitor(未在日志传送监视器上更新备份、复制和加载作业信息)
Q5:在日志传送已运行一段时间之后,是否可以在主服务器上修改事务日志备份的频率和目标文件夹?

A5:可以。此信息位于主服务器上的"维护计划"中。若要查看此信息,请按照下列步骤操作:

  1. 在必须修改此信息的数据库所在的主服务器上双击维护计划
  2. 单击事务日志备份选项卡。在对话框中修改目标文件夹和频率。
  3. 因为辅助服务器上的复制作业准备从设置日志传送时指定的共享文件夹复制事务日志备份,所以在修改事务日志备份的目标文件夹之后,此作业可能会失败。有关如何解决此问题的更多信息,请阅读以下 Microsoft 知识库文章:
    314570 PRB:Cannot Modify Backup Network Share After You Change the Transaction Log Backup Folder(在您更改了事务日志备份文件夹之后将无法修改备份网络共享)

日志传送角色更改

Q1:如何执行日志传送角色更改?

A1:单击下面的链接阅读 SQL Server 2000 联机图书有关执行日志传送角色更改的主题:

如何设置和执行日志传送角色更改 (Transact-SQL)

Q2:是否可以在主服务器脱机或不可用时执行角色更改?

A2:可以。在主服务器上运行 sp_change_primary_role 存储过程是可选的。

Q3:为什么在角色更改时从辅助数据库运行 sp_resolve_logins 存储过程会失败并返回错误信息 208?

A3:sp_resolve_logins 存储过程不限定具有 master 数据库前缀的 sysusers 系统表。sp_resolve_logins 存储过程的代码存在的问题是一个已知问题。有关此问题的更多信息,请阅读以下 Microsoft 知识库文章:
310882 BUG:sp_resolve_logins Stored Procedure Fails If Executed During Log Shipping Role Change(在日志传送角色更改过程中执行 sp_resolve_logins 存储过程将会失败)
Q4:当有多个辅助服务器参与角色更改时,将某个辅助服务器提升为主服务器是否会出现问题?

A4:阅读以下 Microsoft 知识库文章以了解在执行涉及多个辅助服务器的角色更改时可能导致错误的已知问题:
300497 FIX:日志传送:Cannot Change Role From Secondary to Primary When Database Names Are Different(当数据库名称不同时,无法将角色从辅助服务器更改为主服务器)
Q5:在将辅助服务器提升为主服务器之后,如何重建日志传送?

A5:如果在设置日志传送时在添加目标数据库对话框中选中了允许数据库承担主服务器角色复选框,则可以在执行角色更改之后执行以下步骤添加新的辅助服务器。如果未选择此设置,则在角色更改后使用"维护计划"向导设置日志传送。

  1. 打开 SQL Server 企业管理器,然后连接到提升的主服务器。将您要添加的服务器注册为辅助服务器。
  2. (在 SQL Server 企业管理器中)展开管理,然后单击维护计划。在列表中右键单击适当的维护计划,然后单击属性
  3. 单击日志传送选项卡,然后单击添加
  4. 在此对话框中提供有关辅助服务器的适当信息,然后单击确定。这样便会将一个新的辅助服务器添加到日志传送。
Q6:如何继续向以前的主服务器进行日志传送而不恢复数据库备份?

A6:可以在两个服务器之间重复传送日志而不用恢复完整的数据库备份。要求是在您执行角色更改过程中主服务器和辅助服务器都可用。作为执行角色更改的一部分,您必须运行 sp_change_primary_role 存储过程。您必须运行 sp_change_primary_role 存储过程,同时将 @final_state 参数设置为 2 或 3。这将使主数据库在执行事务日志备份之后处于未恢复的状态。因为该数据库处于未恢复的状态,所以可以在添加日志传送目标时选择该数据库(在上一个问题中有所解释)。这样,您就不需要重新加载数据库备份了。

日志传送删除

Q1:如何停止特定日志传送对的日志传送?

A1:按照以下步骤删除日志传送对:

  1. 在主服务器上打开 SQL Server 企业管理器。展开管理,然后单击维护计划。右键单击维护计划,然后单击属性
  2. 单击日志传送选项卡,然后单击以选择您要删除的日志传送对。
  3. 单击删除命令按钮从日志传送中删除此对。如果这是日志传送中的最后一对,则单击删除将删除日志传送。如果要向不同的服务器或数据库继续进行日志传送,则单击添加。然后,在删除现有的日志传送辅助服务器或数据库之前,单击以选择适当的服务器或数据库充当辅助服务器。
Q2:删除名称中含有特殊字符的数据库的日志传送是否会有问题?

A2:请阅读以下 Microsoft 知识库文章,该文章对此问题进行了更详细的讨论:
295936 FIX:Error Removing Log Shipping on Secondary Database When Database Name Has a Quote(当数据库名称含有引号时删除辅助数据库上的日志传送出错)

参考

有关日志传送的更多信息,请访问以下 Microsoft Web 站点:

如何设置日志传送(白皮书)

日志传送

275146 INF:常见问题 - SQL Server 7.0 - 日志传送


如果您未找到具体问题的解答,请访问 Microsoft SQL Server 新闻组,位于:Microsoft SQL Server 新闻组

如果您对此文章或其他 Microsoft 知识库文章有任何评论,请给我们发个条子,地址是 SQLKB@Microsoft.com

属性

文章编号: 314515 - 最后修改: 2011年2月16日 - 修订: 2.2
关键字:?
kbsqldeveloper kbinfo KB314515
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com