SQL Server 系统数据库恢复
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/故障恢复/master
概述
SQL Server 维护一组系统级数据库(称为“系统数据库”),这些数据库对于服务器实例的运行至关重要。每次进行大量更新后,都必须备份多个系统数据库。必须备份的系统数据库包括 msdb、master 和 model。如果有任何数据库在服务器实例上使用了复制,则还必须备份 distribution 系统数据库。备份这些系统数据库,就可以在发生系统故障(例如硬盘丢失)时还原和恢复 SQL Server 系统。
目录
正文
系统数据库说明

----1.resource
/*
包含SQLServer运行所需的关键系统表、元数、系统存储过程,它只包含系统相关的信息不包含用户相关的信息,在安装补丁的过程中将更改该数据库
*/
SELECT SERVERPROPERTY('ResourceVersion'),--返回数据库的最新版本
SERVERPROPERTY('ResourceLastUpdateDateTime'),--返回数据库的最后升级时间
SERVERPROPERTY('ProductUpdateReference')--返回升级的补丁信息 ----2.master
/*
包含数据库相关配置、登录信息、实例相关配置信息
*/ ----3.tempdb
/*
存储用户创建的临时对象(临时表、表变量等)、数据库引擎所需的临时对象、行版本信息等,tempdb数据库性能非常重要如果条件可以的话可以将其配置到当地的存储磁盘下,
ssd最佳。每次重启时tempdb库会重建。
*/ ----4.model
/*
所有在实例上面新建的数据库都会参考模板数据库的相关配置进行创建(还原的数据库除外),新建的数据库相当于是copy一份model数据库的副本,包括model数据库的
数据库属性和数据库中创建的对象都会复制到新建的数据库中。
*/ ----5.msdb
/*
包含SQL Server代理(作业、操作员、报警、策略以及作业历史的全部信息)、日志传输、SSIS、备份还原信息等操作信息。
*/
单用户启动实例
方法1:在配置管理器中,右键实例在启动参数中添加-m(注意是小写的m),重新启动服务,处理完之后记得把-m参数去除重新启动服务。

方法2:在cmd中,使用net start mssqlserver /m,首先先停止所有相关的服务.

保持此窗口的情况下,数据库实例是无法进行连接登入的,所有出来完之后需要再次重启服务,重启的时候把/m参数去除。
方法3:在cmd中先定位到数据库安装目录“Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn”,输入sqlservr.exe –c –m,然后打开msms直接点新建查询使用管理员用户进入。

补充:配置管理员专用链接
运行输入cmd
输入Sqlcmd -A -S 127.0.0.1 或者Sqlcmd -A -S IP 或者Sqlcmd -A -S 机器名
如果是命名实例那么要在后面加上实例名:Sqlcmd -A -S 机器名\实例名
通过新建查询连接(文件-新建-数据库引擎查询)
ADMIN:IP或者ADMIN:127.0.0.1或者ADMIN:机器名
常用查询语句
select * from sys.dm_exec_requests SELECT * from sysprocesses select * from sys.dm_os_memory_cache_counters select * from sys.dm_exec_sessions
还原master数据库
还原master的数据库必须在单用户启动实例,然后使用管理员用户进行还原。这也是文章前面讲单用户启动实例的目的
使用方法1和方法3启动实例之后,不要用往常登入的方式登入SQL管理工具,而是之间点击新建查询或者点击文件菜单-新建-数据库引擎查询,然后输入管理员权限的用户进入,接下来就是还原数据库了,还原语句很简单例如:
RESTORE DATABASE [master] FROM DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak'
GO
如果失败则加上WITH REPLACE
RESTORE DATABASE [master] FROM DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak'
WITH REPLACE
方法2有一个要注意的地方就是,在单用户启动实例之后进入sqlcmd工具,执行use master之后每一步记得加上go,否则一直是光标闪动,还有方法2只能还原master数据库无法还原其他数据库。

还原完之后再以正常的方式重新启动服务就好。
注意:如果重新生成master数据库之后(这里的重新生成和还原备份是不一样的,如果是还原最新的备份是不用再重新还原msdb和model数据库),一定要重新还原msdb和model数据库。
还原msdb数据库
还原 model 或 msdb 数据库与对用户数据库执行完整的数据库还原相同。不能还原用户正在访问的数据库。如果 SQL Server 代理正在运行,它可以访问 msdb 数据库。因此,在还原 msdb 之前,请先停止 SQL Server 代理。
msdb数据库需要在单用户模式下进行还原,这里说的单用户跟前面的master的单用户启动实例不一样,这里的单用户只是获取msdb数据库的单独访问权限,所以可以用语句将数据库设置成单用户模式然后执行还原。
USE [master]
GO
ALTER DATABASE [msdb] SET SINGLE_USER WITH NO_WAIT
GO
RESTORE DATABASE [msdb] FROM DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\msdb.bak'
ALTER DATABASE [msdb] SET MULTI_USER WITH NO_WAIT
还原model数据库
还原model数据库与还原用户数据库的方法一样,这里就不做介绍。
还原Resource数据库
这个系统数据库无法进行备份还原,只能对文件进行备份;2008r2版本的sql的数据文件和日志文件在“D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn”路径下。
备份还原复制数据库
复制支持将复制的数据库还原到从中创建备份的同一服务器和数据库。 如果将复制数据库的备份还原到其他服务器或数据库,则无法保留复制设置。 在这种情况下,您必须在还原备份后重新创建所有发布和订阅(如果正在使用日志传送,则可以将复制数据库还原到备用服务器)。
应定期备份复制数据库及其关联系统数据库。 备份下列数据库:
- 发布服务器上的发布数据库
- 分发服务器上的分发数据库
- 各个订阅服务器上的订阅数据库
- 发布服务器、分发服务器和所有订阅服务器上的 master 和 msdb 系统数据库。
当备份这些数据库中的一个数据库或相关的复制数据库时,应同时备份这些数据库。 例如,应在备份发布数据库的同时备份发布服务器上的 master 和
msdb 数据库。 如果还原发布数据库,请确保 master 和 msdb
数据库在复制配置和设置方面与发布数据库保持一致。
总结
总之系统数据库对于实例是非常重要的,所以备份计划中一定不能少了系统数据库的备份。
|
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。 《欢迎交流讨论》 |
SQL Server 系统数据库恢复的更多相关文章
- (5.1)sql server系统数据库
关键词:mssql系统数据库,sql server系统数据库,tempdb的作用 master:它包含一个系统表集合,是整个实例的中央存储库,维护登录账户,其他数据库,文件分布,系统配置设置,磁盘空间 ...
- SQL Server系统数据库备份最佳实践
原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...
- SQL Server 系统数据库
Sql Server的系统数据库分为:master.model.msdb,resouce和tempdb,这五个数据库在SQL Server中各司其职,作为研发人员,很有必要了解这几个数据库的职责,下面 ...
- 关于SQL Server系统数据库详解
介绍这里我们介绍SQL Sever内部的系统数据库的作用和用户数据库之间联系,关于SQL Sever如何管理用户数据库的原理,对于每个数据库开发人员和DBA都是必须掌握的. SQL Sever系统数据 ...
- SQL Server系统数据库
Master Master数据库保存有放在SQLSERVER实体上的所有数据库,它还是将引擎固定起来的粘合剂.由于如果不使用主数据库,SQLSERVER就不能启动,所以你必须要小心地管理好这个数据库. ...
- T-SQL :SQL Server系统数据库(二)
master:master数据库储存实例范围的元数据信息,服务器配置,实例中的所有数据库信息和初始化信息. Resource:Resource数据库是一个隐藏,只读数据库,存储所有系统对象的定义.当查 ...
- (原)SQL Server 系统提供功能的三个疑惑
本文目录列表: 1.SQL Server系统提供的部分疑惑概述2.系统函数调用时DEFAULT代替可选参数使用不统一3.队列字段列message_enqueue_time记录的是UTC日期时间 4.@ ...
- [转]实战 SQL Server 2008 数据库误删除数据的恢复
实战 SQL Server 2008 数据库误删除数据的恢复 关键字:SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我,他用delete ...
- SQL Server 2008 数据库误删除数据的恢复
原文:SQL Server 2008 数据库误删除数据的恢复 原文:http://www.cnblogs.com/dudu/archive/2011/10/15/sql_server_recover_ ...
随机推荐
- 更改pip安装源的镜像解决安装总是timeout的情况
由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...
- 关于linux服务器上搭建ftp服务的流程
小龙最近折腾了一个阿里云的服务器,买完了就要开始做那么多那么多的功课,小龙对ssh也是一知半解的状态,做个小笔记,发布下整个ftp服务的搭建过程,大神勿喷:) 一.aliyun Linux(Redha ...
- webpack2新特性
增加 import() 作为代码分割点:System.import已被弃用,在webpack3时会被完全移除: 内置了json加载器,不再需要单独配置了 当打包文件过大时会提示性能警告,可以用 per ...
- [转]Windows7文件夹转移清理臃肿的C盘
当你使用Windows的时候,你会发现无论哪个版本的Windows,系统都会默认将用户文件夹和程序数据文件夹(xp下是Documents and Settings文件夹,而windows7和vista ...
- Ue4的UE_LOG
说明:本文为Wiki上的RAMA大神文章的大致翻译 游戏模式: 在游戏模式下,你需要在游戏的快捷方式后面加 -Log,才会在游戏中显示. 编辑器模式(Play In Editor): 你可以在Outp ...
- 关于jquery简单操作简单表格
最近在摸索jquery中,想着学习过程中还是记下点自己的东西比较好,不管是日后自己查阅,亦或是对于他人有些许帮助. 也是一件两全其美的事情了. 下面我就简单 贴上自己的html中重要部分了. 具体实现 ...
- Access restriction: The type 'FileURLConnection' is not API
遇到这种报错,解决方案如下: 报错原因是访问限制报错 工具栏中Project>preferences>java-Compiler>Errors/Warnings>把右侧的[De ...
- EF DbContext 并发执行时可能出现的问题
现在许多Web项目都使用了IOC的DI注入组件.其中对象的生命周期管理是非常重要的. 有时我们为了提高请求的响应,经常在请求线程中执行多个子线程,然而忽略了EF的DbContext的生命周期管理. D ...
- Python 进程间通信
from multiprocessing import Process,Queue import os,time,random def write(q): print('Process to writ ...
- 【Linux】crontab 定时任务
7月份,公司海外运营国发生数据库联接未释放,造成连接池连接不足的情况, 当时查询并没有及时解决问题, 为了避免现场同事多次人工重启系统的,因此写了个shell脚本,通过crontab 实现系统重启,但 ...