SQL Server 系统数据库恢复

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

概述

     SQL Server 维护一组系统级数据库(称为“系统数据库”),这些数据库对于服务器实例的运行至关重要。每次进行大量更新后,都必须备份多个系统数据库。必须备份的系统数据库包括 msdbmastermodel。如果有任何数据库在服务器实例上使用了复制,则还必须备份 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数据库  

还原 modelmsdb 数据库与对用户数据库执行完整的数据库还原相同。不能还原用户正在访问的数据库。如果 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”路径下。

备份还原复制数据库

复制支持将复制的数据库还原到从中创建备份的同一服务器和数据库。 如果将复制数据库的备份还原到其他服务器或数据库,则无法保留复制设置。 在这种情况下,您必须在还原备份后重新创建所有发布和订阅(如果正在使用日志传送,则可以将复制数据库还原到备用服务器)。

 

      应定期备份复制数据库及其关联系统数据库。 备份下列数据库:

 

  • 发布服务器上的发布数据库

  • 分发服务器上的分发数据库

  • 各个订阅服务器上的订阅数据库

  • 发布服务器、分发服务器和所有订阅服务器上的 mastermsdb 系统数据库。 当备份这些数据库中的一个数据库或相关的复制数据库时,应同时备份这些数据库。 例如,应在备份发布数据库的同时备份发布服务器上的 mastermsdb 数据库。 如果还原发布数据库,请确保 mastermsdb 数据库在复制配置和设置方面与发布数据库保持一致。

可以参照:https://msdn.microsoft.com/zh-cn/library/ms152560.aspx

 

 

总结

    总之系统数据库对于实例是非常重要的,所以备份计划中一定不能少了系统数据库的备份。 








本文转自pursuer.chen(陈敏华)博客园博客,原文链接:www.cnblogs.com/chenmh/p/4331911.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
12天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
21 2
|
13天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
13天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
78 6
|
1天前
|
SQL 关系型数据库 MySQL
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
6 0
|
2天前
|
SQL Oracle 关系型数据库
sql语句创建数据库
在创建数据库之前,请确保你有足够的权限,并且已经考虑了数据库的安全性和性能需求。此外,不同的DBMS可能有特定的最佳实践和配置要求,因此建议查阅相关DBMS的官方文档以获取更详细和准确的信息。
|
2天前
|
SQL 缓存 数据库
sql 数据库优化
SQL数据库优化是一个复杂且关键的过程,涉及多个层面的技术和策略。以下是一些主要的优化建议: 查询语句优化: 避免全表扫描:在查询时,尽量使用索引来减少全表扫描,提高查询速度。 使用合适的子查询方式:子查询可能降低查询效率,但可以通过优化子查询的结构或使用连接(JOIN)替代子查询来提高性能。 简化查询语句:避免不必要的复杂查询,尽量使SQL语句简单明了。 使用EXISTS替代IN:在查询数据是否存在时,使用EXISTS通常比IN更快。 索引优化: 建立合适的索引:对于经常查询的列,如主键和外键,应创建相应的索引。同时,考虑使用覆盖索引来进一步提高性能。 避免过多的索引:虽然索引可以提高查询
|
8天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
19 0
|
9天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
9天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
34 3
|
12天前
|
存储 NoSQL 安全
物流系统数据库的应该以及选择
物流系统数据库在信息化建设中扮演关键角色,用于数据存储、管理和共享,支持决策,并优化资源配置。选择数据库时要考虑类型(如关系型或NoSQL)、性能稳定性、成本易用性、安全性和未来发展需求。完善数据管理与安全措施,确保数据准确性和系统扩展性,是提升物流效率和企业竞争力的关键。
16 3