知识大全 SQL Server 2000之日志传送功能 - 描述

Posted 数据库

篇首语:从来好事天生俭,自古瓜儿苦后甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server 2000之日志传送功能 - 描述相关的知识,希望对你有一定的参考价值。

SQL Server 2000之日志传送功能 - 描述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

  角色变更

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

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

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

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

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

  程序代码列表 将日志传送数据库从读/写模式降级成只读模式之预存程序

  USE master

  GO

  EXEC msdb dbo sp_change_primary_role

  @db_name = Pubscopy

  @backup_log =

  @terminate =

  @final_state =

  @access_level =

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

  程序代码列表 将次要服务器数据库升级成主要服务器数据库之预存程序

  USE master

  GO

  EXEC msdb dbo sp_change_secondary_role

  @db_name = Pubscopy

  @do_load =

  @force_load =

  @final_state =

  @access_level =

  @terminate =

  @keep_replication =

  @stopat = null

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

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

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

  程序代码列表 将角色互换结果通知监控服务器之预存程序

  USE master

  GO

  EXEC msdb dbo sp_change_monitor_role

  @primary_server = oahu\\sql k_

  @secondary_server = oahu\\sql k_

  @database = Pubscopy

  @new_source = oahu\\sql k_

  步骤 : 在次要服务器上解析登入帐号 您必须先在新主要服务器上解析旧主要服务器登入帐号 使用者才可以存取新主要服务器;方式是使用步骤 所汇出之登入帐号档案 此汇出档案可被 sp_resolve_logins 预存程序所读取 然后解析各服务器间 SID 的差异 举例来说 程序代码列表 示范如何在新复原的 Pubscopy 数据库上执行 sp_resolve_logins 预存程序 去解析原来的登入帐号 BOL文章曾教导您必须在目的数据库内才能执行该预存程序 事实上 sp_resolve_logins 使用了非完整式参照(unqualified reference)指向 syslogins 视观表 所以您必须在 master 数据库内才能执行此预存程序!

  程序代码列表 在次要服务器上解析登入帐号的预存程序

  USE master

  GO

  EXEC sp_resolve_logins

  @dest_db = Pubscopy

  @dest_path = d:\\

  @filename = syslogins dat

  步骤 : 连结数据库存取与权限 BOL 对于角色变更的相关讨论仅止于步骤 但是它忽略一个重要步骤 在 数据库存取权限 与 转移后登入帐号 之间进行协调动作 为了在新主要服务器内线上数据库 将移转后已解析的登入帐号连结至相对应的数据库使用者及其权限 您必须执行针对每个登入帐号执行一次 sp_change_users_login 预存程序

  USE pubscopy

  GO

  EXEC sp_change_users_login Update_One UserName LoginName

  执行该预存程序可确保 SQL Server 登入帐号能够正确地连结相对应的数据库使用者名称

  到此为止 您已经成功地将次要服务器升级为新的角色 而旧主要服务器也早已变成次要服务器 然而 您仍然尚未建置新的日志传送关系 您完成的只是角色变更 而不是角色互换

  角色互换

相关参考

知识大全 SQL Server 2000之日志传送功能—问题解决

SQLServer2000之日志传送功能—问题解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 SQL Server 2000日志转移实现高可用性[2]

SQLServer2000日志转移实现高可用性[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server 2000日志转移实现高可用性[1]

SQLServer2000日志转移实现高可用性[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 在SQL Server 2000查询分析器里面收缩数据库日志

在SQLServer2000查询分析器里面收缩数据库日志  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 清理SQL Server 2008日志文件

清理SQLServer2008日志文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL日志

知识大全 SQL Server日志文件总结及日志满的处理

SQLServer日志文件总结及日志满的处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  交易

知识大全 SQL Server2000服务器功能合并问题的看法

SQLServer2000服务器功能合并问题的看法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 关于SQL Server事务日志的问题汇总

关于SQLServer事务日志的问题汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用BAC

知识大全 sql server通过日志恢复数据库

  创建测试数据库Test  createdatabaseTest  onprimary  (  name=’Test_datamdf’  filename=’d:Test_datamdf’  )  

知识大全 Microsoft SQL Server数据库日志截断

数据库相关:MicrosoftSQLServer数据库日志截断  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来