SQL Server 2000之日志传送功能 - 描述

17、SQL Server 日志传送技术详解 本文详细介绍了SQL Server中的日志传送技术,包括其基本原理、配置方法以及在实际场景中的应用。日志传送是一种低成本、高灵活性的数据保护技术,适用于灾难恢复和业务连续性保障。文章深入解析了LSN链的重要性、备份和还原频率的设置、网络权限问题,并对比了SQL Server 2000与SQL Server 2005在日志传送方面的差异。同时,还提供了手动和自动化配置日志传送的详细步骤,以及在不同场景下的最佳实践建议。 阅读详情

SQL Server 2000之日志传送功能 - 描述

角色变更、角色互换、以及监控服务器所在位置

    当线上数据库停摆时(可能是计划内维护工作,或是预期外的状况),如果还有备援服务器上的数据库可供存取,您可能会比较安心一点。一个设计良好的日志传送系统(将数据库交易日志文件从主要服务器传送到备援服务器)即可给予您这样的自信心。内建于 SQL Serve 2000 企业板与开发版的 Enterprise Manager 工具程序即支持日志传送功能。

角色变更

    将日志从主要服务器传送到次要服务器之后,您可在必要时以次要服务器置换掉主要服务器。如果主要服务器发生问题,或是计划性停摆(例如升级硬件或安装修正程序),线上数据库就必须停止服务一段期间。此时您可以变更次要服务器上数据库之角色,让它取代主要服务器之后进而成为线上数据库。SQL Server 2000 线上手册(Books Online,BOL)将此项操作称为日志传送角色变更(log shipping role change)。在日志传送过程里,次要服务器需设定在无法复原(nonrecovered)状态,因此交易日志才能从主要服务器回存到次要服务器(一但您将数据库复原,就不能再回存交易记录)。变更角色时,您需将次要服务器的数据库予以复原,并标示其为新主要服务器数据库。您也可以将旧主要服务器数据库设定为新次要服务器数据库。如果旧主要服务器数据库并未损坏,那么就可以在新主要服务器与旧主要服务器(已变成新次要服务器)之间重新建置日志传送功能。这种切换方式我们称为角色互换(role reversal)。

    这些操作指引可修订为六个基本步骤,分别为: 1、转移与汇出登入帐号,2、降级(demote)主要服务器,3、升级(promote)次要服务器,4、通知监控服务器角色已变更,5、在次要服务器上解析登入帐号,6、以及连结数据库存取与权限。

    步骤 1: 转移与汇出登入帐号 首先,BOL 建议您建立一个SQL Server 2000 DTS封装(package),用来将主要服务器的登入帐号转移到次要服务器,且执行各服务器间登入帐号SID之解析动作。转移登入帐号所用的 DTS Transfer Logins Task只能在 SQL Server 2000 DTS Designer内使用。您可在主要服务器上建立与储存 DTS 封装,然后呼叫 dtsrun.exe 设定该封装的执行方式 — 透过主要服务器 SQL Server Agent 的工作(job)。该封装执行时会将登入帐号从某服务器传送到另一服务器,但是它并不会解析其登入帐号的SID(在稍后步骤中会说明为何需解析登入帐号)。然而,为了在稍后能顺利解析登入帐号,您必须先建立一个档案,其内包含主要服务器 syslogins 资料表的汇出资料。

    汇出登入帐号到次要服务器时,BOL建议您建立一个两阶段的SQL Server Agent工作:使用bcp汇出,以及复制登入帐号。在第一个步骤,您将使用原始模式的bcp将登入帐号汇出至某个档案。而在第二个步骤里,您必须将登入帐号复制到次要服务器的某个档案,以便稍后进行角色变更时可用来解析登入帐号。在步骤5您将使用 sp_resolve_logins 预存程序去解析次要服务器上登入帐号的SID。该工作建立完成后,就可以定期地执行(例如每晚执行一次)。如此一来次要服务器上将随时保留最新的登入帐号汇出文件,以便进行日志传送角色变更。

    步骤 2: 降级主要服务器 为了让主要服务器不再是日志传送系统的资料来源,您必须将它”降级”。您可以降级主要服务器的来源数据库,让它变成潜在的次要服务器。然后在主要服务器上执行sp_change_primary_role 预存程序,目的是移除原有日志传送功能。程序代码列表1显示该预存程序如何把 Pubscopy 日志传送数据库从读/写模式更改成只读备援模式,准备随时接受交易日志之备份资料。该预存程序经由数个步骤后会在日志传送计划内删除主要服务器数据库。传入的参数将告之预存程序需执行以下工作:备份最近一次的交易日志、结束数据库内所有使用者联机、将数据库设定在备援状态与多使用者存取层级。预存程序的回传代码将标示 BACKUP LOG 叙述句是否成功执行。

    程序代码列表1:将日志传送数据库从读/写模式降级成只读模式之预存程序。
USE master
GO
EXEC msdb.dbo.sp_change_primary_role
       @db_name = 'Pubscopy',
       @backup_log = 1,
       @terminate = 1,
       @final_state = 3,
       @access_level = 1

    步骤 3: 升级次要服务器 下一个步骤是把目前次要服务器升级成复原状态(recovered state),这样它才能取代原先的线上数据库,且变成潜在日志传送主要服务器数据库。在次要服务器上,如果您已确认无任何使用者继续存取数据库,就可以执行 sp_change_secondary_role 预存程序,如程序代码列表2所示:

    程序代码列表 2:将次要服务器数据库升级成主要服务器数据库之预存程序。
USE master
GO
EXEC msdb.dbo.sp_change_secondary_role
       @db_name = 'Pubscopy',
       @do_load = 1,
       @force_load = 1,
       @final_state = 1,
       @access_level = 1,
       @terminate = 1,
       @keep_replication = 0,
       @stopat = null

    这些参数将促使该预存程序尝试将所有剩余的交易日志文件从原先主要服务器复制到次要服务器,并将这些日志文件加载次要服务器数据库。参数 @do_load=1 会进行最近一次备份,并加载所有交易日志文件;参数 @force_load=1 是在执行 sqlmaint.exe 时指定尚未文件化的 Forceload 选项;参数 @final_state=1 将新主要服务器数据库设定为复原模式;参数 @access_level 将存取方式设回先前多使用者状态。参数 @terminate=1 则促使该预存程序中断所有使用者的数据库存取动作 — 方式是执行 ALTER DATABASE 配合 IMMEDIATE 选项。然而,如果执行此预存程序时,您自己的 Enterprise Manager 与数据库间联机处于开启状态,ALTER DATABASE 动作将会失败。所以您必须以手动方式确认是否已将所有数据库联机予以中断。最后,如果该数据库被设定为数据库复写(replication)之出版者数据库(publisher),那么 @keep_replication=0 参数将依旧维持服务器上所有复写设定。

    假如您曾选择让次要服务器成为未来潜在的主要服务器,则数据库维护计划会在次要服务器上建置一个交易日志备份工作(SQL Server Agent 的transaction-log backup job)。该工作激活之后,交易日志备份文件就会开始出现在新主要服务器。您需要这些档案去重新设定将日志传送回新次要服务器。

    Step 4: 通知监控服务器角色已变更 SQL Server 2000 的日志传送会在监控服务器上安装监控工具程序;最好是在第三台服务器。为了通知监控服务器日志传送的角色已经过变更,您必须在监控服务器上执行 sp_change_monitor_role 预存程序,如程序代码列表3所示。尽管名称内含有 change 字眼,但它并不会变更监控服务器的角色。相反地,此预存程序会变更主要/次要服务器内档案分享所参照(reference)的位置。意思是说:监控服务器 log_shipping_secondaries 资料表内原先参照旧次要服务器的资料会被删除。而在 log_shipping_primaries 资料表内则是将旧主要服务器名称更改为新主要服务器名称。此预存程序并不会将资料新增到 log_shipping_secondaries 资料表,因为新的配对服务器目前尚未建置。
 
       程序代码列表 3: 将角色互换结果通知监控服务器之预存程序。
USE master
GO
EXEC msdb.dbo.sp_change_monitor_role
      @primary_server = 'oahu/sql2k_1' ,
      @secondary_server = 'oahu/sql2k_2',
      @database = 'Pubscopy',
      @new_source = 'oahu/sql2k_2'

 
       步骤 5: 在次要服务器上解析登入帐号 您必须先在新主要服务器上解析旧主要服务器登入帐号,使用者才可以存取新主要服务器;方式是使用步骤1所汇出之登入帐号档案。此汇出档案可被 sp_resolve_logins 预存程序所读取,然后解析各服务器间 SID 的差异。举例来说,程序代码列表4示范如何在新复原的 Pubscopy 数据库上执行 sp_resolve_logins 预存程序,去解析原来的登入帐号。BOL文章曾教导您必须在目的数据库内才能执行该预存程序。事实上,sp_resolve_logins 使用了非完整式参照(unqualified reference)指向 syslogins 视观表,所以您必须在 master 数据库内才能执行此预存程序!
 
        程序代码列表4: 在次要服务器上解析登入帐号的预存程序。
USE master
GO
EXEC sp_resolve_logins
      @dest_db = 'Pubscopy',
      @dest_path = 'd:/',
      @filename = 'syslogins.dat'
 
        步骤 6: 连结数据库存取与权限 BOL 对于角色变更的相关讨论仅止于步骤5,但是它忽略一个重要步骤:在 "数据库存取权限" 与 "转移后登入帐号" 之间进行协调动作。为了在新主要服务器内线上数据库,将移转后已解析的登入帐号连结至相对应的数据库使用者及其权限,您必须执行针对每个登入帐号执行一次 sp_change_users_login 预存程序。
 
USE pubscopy
GO
EXEC sp_change_users_login 'Update_One', 'UserName', 'LoginName'

 
        执行该预存程序可确保 SQL Server 登入帐号能够正确地连结相对应的数据库使用者名称。
 
        到此为止,您已经成功地将次要服务器升级为新的角色,而旧主要服务器也早已变成次要服务器。然而,您仍然尚未建置新的日志传送关系。您完成的只是角色变更,而不是角色互换。
 
角色互换

        为了达成完整的日志传送角色互换,您只需在新主要服务器与新次要服务器之间重新设定一次日志传送即可。因为新主要服务器已内含崭新的数据库维护计划,您将会倾向在维护计划内直接加入新次要服务器,做为目的服务器。然而经过多次尝试之后,我发现新主要服务器的 "交易日志备份工作" 总是会失败,并且日志也不会从新主要服务器传送到新次要服务器。
 
        所以,您需要另外一种方法。您在执行过日志传送角色变更的预存程序,以及先前我详细说明的步骤后,就可以直接达成完整的角色互换 - 在新主要服务器与新次要服务器之间建置一份新的日志传送计划。为了建置该计划,您需遵循下列步骤:
1.        在新主要服务器的数据库维护计划内移除日志传送功能。
2.        在主要服务器上删除数据库维护计划。
3.        在次要服务器上删除数据库维护计划。
4.        维持所有交易日志文件。
5.        在新主要服务器上建立一个新的数据库维护计划,指定新次要服务器所在、目的数据库位置、以及交易日志文件之适当存放位置,如同我在 Part 1所介绍的内容。
6.        重新开始新主要服务器的所有活动。
 
        在您成功设定角色互换且建置新日志传送配对服务器之后,Enterprise Manager 的日志传送监视器可能会告知您新次要服务器数据库并未与新主要服务器数据库取得同步(out of sync)。如果 "最近一次加载的交易日志" 与 "最近一次备份的交易日志" 之间的时间差超过了 out-of-sync 设定值,您就会收到此报告。直到最近一次的备份资料被加载之后,日志传送监视器就会回到平常无错误状态。
 
日志传送监视器所在位置

      Microsoft 强烈建议将日志传送监视器置放于独立服务器上。如此一来,无论主要服务器或是次要服务器执行工作失败时,该监视器都会送出警示(alert)。如果监视器位于主要或次要服务器其中之一,报告结果将取决于监视器所在服务器。如果监视器所在服务器因故停摆,它将无法继续回报可能的错误情况。所以,要让监视器独立回报日志传送系统内主要或次要服务器上可能发生的问题,给予监视器一台独立服务器是较佳的实作方式。此外,也可以使用这台独立的监控服务器去监控其它日志传送配对服务器。
 
        如果没有其它服务器可安装监控程序,而需要放在主要或次要服务器其中之一。究竟应该把日志传送监视器放在哪台服务器呢?因为重点是想侦测主要服务器上可能发生的日志传送问题,所以放在次要服务器比较妥当。如果将日志传送监视器放在主要服务器上,当主要服务器停摆时,您就无法使用该监视器,监视器也无法在日志传送发生问题时送出警示。所以呢,如果只有两台服务器可使用,次要服务器为置放日志传送监视器较佳的位置。某些时候,为避免灾难发生时影响次要服务器,必须将交易日志从某一实体位置传送到另一个地方(也许有一段距离)。在此情况下,日志传送监视器最好放在其它地方的独立服务器,让灾难发生时不至于影响主要与次要服务器。

转摘《DigJim的专栏》——实在精典,希望更多的人学习,资源共享

实战篇(一):从零构建领域知识图谱——基于Protege的本体建模与知识表示 本文详细介绍了如何从零构建领域知识图谱,重点讲解了基于Protege的本体建模与知识表示方法。通过游戏和电影领域的实战案例,展示了类层次结构设计、属性关系定义、推理验证等关键步骤,帮助读者掌握知识图谱构建的核心技术。 阅读详情

相关推荐

手把手教你用LTspice仿真BUCK-BOOST电路(附波形分析)

本文详细介绍了如何使用LTspice进行BUCK-BOOST电路的仿真与波形分析,涵盖电路原理、CCM与DCM模式特性、效率优化及常见问题解决方案。通过实战案例,帮助工程师快速掌握升降压转换电路的设计与调试技巧,提升电力电子设计能力。

julia4scientist的博客 1048

SQL Server 2000之日志传送功能 - 描述(1)

SQL Server 2000之日志传送功能 - 描述 (1)角色变更、角色互换、以及监控服务器所在位置        当线上数据库停摆时(可能是计划内维护工作,或是预期外的状况),如果还有备援服务器上的数据库可供存取,您可能会比较安心一点。一个设计良好的日志传送系统(将数据库交易日志文件从主要服务器传送到备援服务器)即可给予您这样的自信心。内建于 SQL Serve 2000 企业板与开发版的

This is herman_chow's Blog! 927

CANoe软件之离线报文回放与分析实战

本文详细介绍了如何使用CANoe软件进行离线报文回放与分析,帮助工程师将现场故障数据转化为可反复研究的实验室资源。通过实战步骤,指导如何搭建分析工程、加载DBC文件解码信号,并利用Trace和Graphics窗口进行深度数据筛选与图形化分析,从而高效定位汽车电子故障,是提升诊断效率的关键技能。

weixin_29227585的博客 529

SQL Server 2000之日志传送功能 - 描述(2)

SQL Server 2000之日志传送功能 - 描述(2)角色变更、角色互换、以及监控服务器所在位置    Step 4: 通知监控服务器角色已变更 SQL Server 2000 的日志传送会在监控服务器上安装监控工具程序;最好是在第三台服务器。为了通知监控服务器日志传送的角色已经过变更,您必须在监控服务器上执行 sp_change_monitor_role 预存程序,如程序代码列表3所示

DigJim的专栏 3820

keil4.72添加GD32F10x芯片

1. 下载 GD32F10x_AddOn_V2.0.1.rar,解压缩。 2. 安装 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe 安装位置 再新建工程,发现已经有GD32F10x 3. 增加的文件分析 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe后,在keil文件夹种增加文件如下: ...

TrueLink的博客 2762

pytorch中dataloader的num_workers参数

结论速递 在Windows系统中,num_workers参数建议设为0,在Linux系统则不需担心。 1 问题描述 在之前的任务超大图上的节点表征学习中,使用PyG库用于数据加载的DataLoader,ClusterLoader等类时,会涉及到参数num_workers。在不同系统环境试验该参数的设定值时,会出现不同的结果 colab(Linux),设为12 有warning message,提示num_workers参数设置不合理,不影响继续运行 /usr/local/lib/python3.7/di

qq_40990057的博客 1万+

SQL Server 2000之日志传送功能 - 描述 (1)

SQL Server 2000之日志传送功能 - 描述 (1)角色变更、角色互换、以及监控服务器所在位置    当线上数据库停摆时(可能是计划内维护工作,或是预期外的状况),如果还有备援服务器上的数据库可供存取,您可能会比较安心一点。一个设计良好的日志传送系统(将数据库交易日志文件从主要服务器传送到备援服务器)即可给予您这样的自信心。内建于 SQL Serve 2000 企业板与开发版的 En

老汉--小庙和尚 800

从FreeCAD到BIMBase:PlaneGCS约束求解器的移植使用指南

本文为BIMBase平台的开发者提供了一份详细的PlaneGCS几何约束求解器移植与集成指南。文章深入探讨了如何从FreeCAD中提取PlaneGCS核心代码,并将其适配到BIMBase的C++二次开发环境中,重点解决了内存管理、数据模型桥接、约束抽象以及性能调优等关键问题,旨在帮助开发者构建稳定高效的参数化设计模块。

weixin_29213525的博客 320

SQL SERVER日志传送

<!--[if !supportLists]-->第一章 <!--[endif]-->测试背景 SQL SERVER日志传送功能可自动复制数据库的日志文件,并回存到备份服务器 (standby server) 的另外一个数据库。因此可大幅提高SQL Server数据库的可用性。因为备份数据库完整地接收来源数据库的变化情况,所...

wangpengfei360 119

数值计算之 插值法(4)切比雪夫零点插值

数值计算之 插值法(4)切比雪夫零点插值前言插值点选取第一类切比雪夫多项式拉格朗日插值多项式的余项切比雪夫零点插值后记 前言 上篇插值法讨论了多项式插值的解,以及龙格现象。本篇将介绍一种在抽取节点时有效降低龙格现象的方法——切比雪夫零点插值。 插值点选取 插值多项式阶数较高时,在取值空间均匀取点,容易出现龙格现象。 即区间边缘的插值结果与原函数差异很大,而区间中央的插值结果相对较好。这表明,高阶多项式插值对区间中央的节点拟合好,而对两端节点拟合效果差。 自然而然会想到,在两端多采样一些节点,在中间少采样一

qq_41035283的博客 1万+

机器人行业面试全攻略:从0到1拿下心仪Offer,看这一篇就够了

【摘要】2026年机器人行业迎来爆发期,全球市场规模超800亿美元,人才争夺激烈。本文针对机器人行业面试提供系统攻略:首先需明确岗位方向、打造差异化标签并了解目标公司;技术面试高频考点包括ROS框架、SLAM导航、运动控制、深度学习和嵌入式系统;项目介绍需采用STAR+R结构并量化成果;行为面试需注意协作能力与职业规划。文章还总结了简历堆砌、单向输出等五大常见误区,强调长期积累与精准准备的重要性,助力求职者把握行业窗口期机会。

郑伟强dev的专栏 191

SQLServer2000之日志传送功能-描述(1)

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 479

超声波雷达探测车位及信号处理方法

在APA泊车中用到了超声波雷达,第一次接触,总结研究之。

周陽讀書 1229

SQL Server 2000之日志传送功能 - 问题解决

SQL Server 2000之日志传送功能可能發生的錯誤一、残余数据    当您进行SQL Server 2000日志传送的实验时,也许偶而会中断设定过程。如果真是如此,那么某些资料仍然会存入每台服务器的日志传送资料表,并且影响到后续的日志传送设定动作。为了保证这些剩余资料都会被清除,请确实删除每台服务器msdb数据库内日志传送资料表之相关资料。错误信息:Error 14261: The

DigJim的专栏 3066

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SQL Server 2000之日志传送功能 - 设定(2)

SQL Server 2000之日志传送功能 - 设定(2)逐步设定在Primary Server中,设定Standby Server及Log shipping1、开启Enterprise Manager,由工具中点选数据库维护计划2、欢迎画面:3、选取数据库:勾选Log shipping4、更新数据最佳化信息:维持预设,不用选择!5、数据库完整性检查:维持预设,不用选择!6、指定数据库备份计划:

This is herman_chow's Blog! 833

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Jtti:怎样进行sql server2000 日志传送

在 SQL Server 2000 Enterprise Manager 中,展开 "管理" -> "SQL Server Agent" -> "代理"。在 "事务日志传送" 选项卡上,勾选 "启用事务日志传送" 选项,并设置传送频率和传送时间窗口。在 SQL Server 2000 Enterprise Manager 中,展开 "管理" -> "SQL Server Agent" -> "代理"。在主服务器上,展开 "管理" -> "SQL Server Agent" -> "日志传送状态"。

JttiSEO的博客 838

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SQL Server 2000之日志传送功能 - 设定(1)

SQL Server 2000之日志传送功能 - 设定(1)      日志传送功能可自动复制数据库的交易日志文件,并回存到备援服务器 (standby server) 的另外一个数据库。因此可大幅提高SQL Server数据库之可用性。因为备援数据库完整地接收来源数据库的异动情况,所以它就是一份来源数据库的复本 - 差别仅在于资料复制与加载过程所产生的时间差。然而,当主要服务器停摆时,您就可

DigJim的专栏 3929

SQL Server 2000之日志传送功能 - 设定(3)

SQL Server 2000之日志传送功能 - 设定(3)更改日志传送之组态设定        您可以使用数据库维护计划之【属性】对话盒来更改日志传送相关设定。在【交易记录文件备份】设定页提供的选项可更改日志传送过程中交易日志文件备份的组态。        【记录传送】设定页显示出您先前在维护计划内设定的日志传送配对服务器;如果您设定了其它组日志传送配对服务器,也会列在此处。本设定页

DigJim的专栏 2665

SQL Server 2000之日志传送功能 - 设定

SQL Server 2000之日志传送功能 - 设定      日志传送功能可自动复制数据库的交易日志文件,并回存到备援服务器 (standby server) 的另外一个数据库。因此可大幅提高SQL Server数据库之可用性。因为备援数据库完整地接收来源数据库的异动情况,所以它就是一份来源数据库的复本 - 差别仅在于资料复制与加载过程所产生的时间差。然而,当主要服务器停摆时,您就可以将备援服

1366
上一篇: 使用约束——概述
下一篇: SQL Server 2000之日志传送功能 - 设定
天地客人
博客等级 码龄23年 62粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值