思考SQL Server三十问之二系统数据库
2. 系统DB有哪些,都有什么作用,需不需要做备份,为什么;损坏了如何做还原(主要是master库);
思考:
系统数据库的重要性不言而喻,了解系统数据库的作用,就是了解mssql是如何管理sql server工作的。
这里面比较重要的master是统管全局的数据库,tempdb在很多情况下是性能的瓶颈db,model可以做很多标准化的东西。
master: 系统数据库,该库主要是管理和存储server的配置项,用户,权限,端点,link server...
tempdb: 使用最频繁的库,提供全局的交换存储空间。包含(不限于)如下几种对象:
1) 用户显性的创建的临时对象:表变量、临时表、游标、临时存储过程...
有一些表明确的不会被缓存:
关联着显式DDL的临时表
关联着命名的约束的临时表
作为动态产生的SQL语句的一部分的临时表——例如,存储过程sp_executeSQL的环境中
2) 数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。
3) 联机事务
msdb: 系统调度、作业、警报;是sql agent的主要存储库。
model: 模版库,主要作用是为了标准化初始化DB。
Resource: 系统资源库,不可见,是存储各类server对象,如sys.objects;
master: 需要备份,一天一次
tempdb: 不能备份,每次重启sql server都会重建
msdb: 需要备份,一天一次,为了保存job数据
model:可以不备份,但需要修改model后备份,为了避免一些初始化的东西丢失。
Resource:自己在过去的时间,没有对这个库进行过备份,专门看了下msdn,这个库的备份方式只能文件备份mssqlsystemresource.mdf 文件,然后还原覆盖。
如何还原master:
1. 在单用户模式下启动服务器实例。
2. cmd: C:\> sqlcmd
RESTORE DATABASE master FROM disk='E:\MSSQL\armor\master.bak' WITH REPLACE;go;
3. 重启sql server.
浙公网安备 33010602011771号