SQLServer系统数据库恢复
sqlserver备份表语句标签: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”,输⼊ –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 数据库在复制配置和设置⽅⾯与发布数据库保持⼀致。
总结
总之系统数据库对于实例是⾮常重要的,所以备份计划中⼀定不能少了系统数据库的备份。
备注:
作者:
本站点所有随笔都是原创,欢迎⼤家转载;但转载时必须注明⽂章来源,且在⽂章开头明显处给明链接,否则保留追究责任的权利。
《欢迎交流讨论》

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。