SQLServer 数据库故障修复顶级技巧之一

所有这些技术都能够作为维护一个备用服务器的手段,同时这个数据库可以在你原先的主数据库出问题时上线并作为新的主服务器。然而,你必须记住的是将备用服务器替换上线只是完成了一半的故障修复工作。

要保证你的应用正常工作,在数据库外部还有许多注意事项。这其中包括登录信息、数据库用户、调度任务、DTS 和 SSIS 包、可执行文件、系统数据库中的对象、同名数据库、链接服务器等等。

有时这些细小的依赖只有在你进行一个数据库故障恢复时才会发现,这样你又不得不花费大量时间进行调试和评估导致这个问题的根源。此外,你还必须让第二台服务器和应用尽可能快地上线以减少停机时间。因此,提前做设置是非常重要的。

当涉及到高可用性和SQL Server 的灾难恢复规划时,你应该谨记我本人所喜欢的一个拉丁谚语 ——Si vis pacem, para bellum,它的意思翻译过来就是“如果你想要得到和平,那就得先作好战争准备。”记住这一点后,让我们来看看一些可能会遇到的问题。我也将建议几个预先可以完成的任务,以确保数据库故障恢复过程快速有效地完成。

SQL Server 登录信息与数据库用户

你的故障恢复服务器应该备份所有的登录信息和数据库用户,包括密码。登录信息可以在任何时候创建,但是如果你使用日志传输或数据库镜像,你的数据库将处理恢复状态,这样你只有在它们重新上线后才能完成恢复过程。

使用 Windows 认证,可以很容易地将登录信息映射到数据库用户。然而,如果你使用的是 SQL 认证,那么你需要手动地在你从另一个服务器获得的数据库上重新建立登录信息与数据库用户的连接。因此,你在迁移数据库时会丢失登录信息和数据库用户之间的连接。

当你在第二台服务器上恢复数据库后,运行这些代码:

USE YourDatabaseName

EXEC sp_change_Users_Login 'UPDATE_ONE', YourDBUserName, YourLogin

保持登录信息同步的另一个方法是遵循 Microsoft Knowledge Base 上关于 在 SQL Server 实例之间传输登录信息和密码 的文章的步骤。这篇文章阐述了如何使用原始的 SID 脚本化登录信息。当在故障恢复数据库服务器上创建这些登录信息时,登录信息与数据库用户之间的连接会被保存,这样你就不必运行上面的脚本修复孤立的用户。

(0)

相关推荐

  • SQLServer 数据库故障修复顶级技巧之一

    所有这些技术都能够作为维护一个备用服务器的手段,同时这个数据库可以在你原先的主数据库出问题时上线并作为新的主服务器.然而,你必须记住的是将备用服务器替换上线只是完成了一半的故障修复工作. 要保证你的应用正常工作,在数据库外部还有许多注意事项.这其中包括登录信息.数据库用户.调度任务.DTS 和 SSIS 包.可执行文件.系统数据库中的对象.同名数据库.链接服务器等等. 有时这些细小的依赖只有在你进行一个数据库故障恢复时才会发现,这样你又不得不花费大量时间进行调试和评估导致这个问题的根源.此外,你

  • sqlserver数据库加密后无法使用MDF,LDF,log文件名称被修改的数据恢复

    ​故障:​ 2个SQL server数据库被加密,无法使用. 数据库MDF.LDF.log日志文件名字被修改, 如下图: 数据库备份被加密,文件名字被修改.管理员联系北亚数据恢复中心进行数据修复. ​数据恢复过程:​ 1.备份数据库.为防止数据恢复过程中对原始数据库造成二次破坏,北亚数据恢复工程师为每个库做了备份.所有恢复数据的操作都在备份上进行, 避免了对原始数据造成损坏的可能. 2.使用北亚自研的数据恢复软件打开被加密的SQL server数据库,发现数据库的头部已被破坏. 3.经过检查,北

  • Oracle ASM数据库故障数据恢复解决方案

    一.故障描述 ASM磁盘组掉线 ,ASM实例不能mount.ASM磁盘组有4个500G的磁盘组成,数据库和ASM软件为10.2.0.1,急需恢复oracle数据库. 二.故障分析 分析组成ASM磁盘组的磁盘,取出ASM元数据,对元数据进行分析:ASM存储元数据损坏,导致diskgroup无法mount.重组ASM存储空间,从ASM磁盘组中导出数据库文件,然后对数据库文件进行检测,修复.如果数据库文件完好,可以利用从ASM磁盘组中导出的数据库文件启动数据库.如果数据库文件损坏,这底层解析这些数据库

  • C# Ado.net实现读取SQLServer数据库存储过程列表及参数信息示例

    本文实例讲述了C# Ado.net读取SQLServer数据库存储过程列表及参数信息的方法.分享给大家供大家参考,具体如下: 得到数据库存储过程列表: select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name 得到某个存储过程的参数信息:(SQL方法) select * from syscolumns where ID in (SELECT id FROM sysobjects

  • node故障定位顶级技巧动态追踪Dynamic Trace详解

    目录 背景和行文目的 动态追踪技术 是什么 优势 原理 用法 demo 演示 实战演示 搭建 easy-monitor 环境 启动一个 egg 应用 制造问题 Dynamic trace 精准定位 实战总结 分享代码 动态追踪技术的未来 传统工具 潜力工具 未来 + 顶尖 总结 背景和行文目的 在做 node 或者其他语言的软件开发时,是否有以下经历: 测试环境一切正常,发到生产环境后,出现诡异问题且难以定位 不同机器.不同容器上,某些逻辑呈现不同的结果,如时区. host 对于时好时坏的玄学问

  • VB语言使用ADO连接、操作SQLServer数据库教程

    几年前学过的VB几乎忘光了,这几天复习了下.VB连接ADO数据库并不是非常难. 连接第一步(要仔细看) 对于小白来讲,这里的教程最详细,连接ADO数据库第一步,要添加什么部件呢?全称是Microsoft ADO Data Control 6.0 (SP6) (OLEDB) 部件. 在Microsoft ADO Data Control 6.0 (SP6) (OLEDB)部件里有一个名叫:Adodc数据控件,要将它添加.在Adodc数据控件数据位置中找到ACCES. 控件引用的方法(值指的是姓名)

  • SQLServer数据库从高版本降级到低版本实例详解

    SQLServer数据库从高版本降级到低版本实例详解 由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度

  • bat/cmd批处理连接SqlServer数据库查询脚本

    难得今天晚上9点前赶回家,而且最近草稿箱也压了不少"湿货",就挑一篇发出来好了!不过在发文章之前先吐槽一下那个从昨天攻击张戈博客到现在还在继续的无聊蛋疼之人! 本来就算开启了云加速全缓存也是扛不住的,因为静态中混着动态请求,比如浏览计数.还好灵机一动,对这些动态做了点小手脚,现在基本毫无压力了!粗略分析一下这个攻击博客的小人,无外乎是2种人: ①.最近张戈博客流量大涨,估计遭人妒忌或者是挡人财路: ②.来张戈博客换友链被拒或被忽略的人,怀恨在心. 对于①:俗话说无人妒忌是庸才,那么无人

  • Oracle数据库的空间管理技巧

    正在看的ORACLE教程是:Oracle数据库的空间管理技巧. 在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定. 一.表空间的自由空间 通过对表空间的自由空间的观察,可用来判断分配给某个表空间的空间是太多还是不够.请看下列的语句 可以看出,在FileNo为12的表空间RBS中,只有0.19%的分配空间未被使用,这个比例太小了,而在SYSTEM及TEMP等表空间中,高达80%以上的空间未被利用,对于生产型数据库,这个表空间的设置有些偏高.

  • 开启SQLSERVER数据库缓存依赖优化网站性能

    很多时候,我们服务器的性能瓶颈会是在查询数据库的时候,所以对数据库的缓存非常重要,那么有没有一种方法,可以实现SQL SERVER数据库的缓存,当数据表没有更新时,就从缓存中读取,当有更新的时候,才从数据表中读取呢,答案是肯定的,这样的话我们对一些常用的基础数据表就可以缓存起来,比如做新闻系统的新闻类别等,每次就不需要从数据库中读取了,加快网站的访问速度. 那么如何开启SQLSERVER数据库缓存依赖,方法如下: 第一步:修改Web.Config的<system.web>节的配置,代码如下,让

随机推荐