• 欢迎访问水熊虫网站,这里是我个人的工作博客,内容大多是遇到问题完善后,会在这里进行总结归纳内容! QQ群
  • 网站导航中的友情链接专栏上线,更新的都是自己这三年整理的一些东西,感兴趣可以看看!
  • 你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经!

教你管理SQL数据库(2)系统数据库和用户数据库

MSSQL WaterBear 7年前 (2017-05-04) 584次浏览 已收录 扫描二维码

一、系统数据库
  一共有6个系统数据库。
1. master
  储存所有的实例层级的配置。实际上,master数据库的作用类似于实例(服务)的配置文件,在启动实例时就需要加载。如果master数据库损坏,将导致实例无法启动。

2. model
  是一个模板。以后在这个实例中新建的数据库都是以model数据库作为模板。

3. msdb
  存储了这个实例的维护操作(作业、警报、备份、恢复等)的所有配置和历史记录。

4. tempdb
  用来保存临时或中间结果集的工作空间。每次启动实例时,都会重新创建tempdb数据库。停止实例时,将永久删除tempdb中的所有数据。

5. resource
  这是SQL Server 2005或更高版本附带的数据库,包含所有的系统对象的副本。这个数据库是隐藏的,而且不可以备份。

6. distribution
  将实例配置为复制分发服务器时,才存在distribution数据库。此数据库存储各种元数据、各种复制的历史记录数据以及用于事务复制的事务。

二、用户数据库
  除了系统默认的6个数据库,用户也可以自己创建新的数据库。
所有的数据库(除了resource数据库)的列表都会显示在一个系统视图里。

select * from sys.databases

resource数据库是隐藏的,那我怎么才能看到它呢?distribution数据库怎么才能出现呢?

resource是隐藏的,官方就是不让你看的。如果你一定要做一回技术大师,一定要看看它里面都有哪些内容,那么:
该数据库的默认位置为 C:\Program Files\Microsoft SQL Server\“实例ID”\MSSQL\Binn  (注意:“实例ID”,例如MSSQL11.MSSQLSERVER)
在这个目录下,可以看到mssqlsystemresource.ldf 和 mssqlsystemresource.mdf

你先把实例停了,然后把这两个文件复制到另一个目录,然后启动实例,把你复制的2个文件“附加”为实例的另一个数据库(当然,数据库的名称不能为resource)。

官方的解释 http://technet.microsoft.com/zh-cn/library/ms190940.aspx

resource数据库包含的是SQL Server实例运行时所需的所有read-only的关键的系统表、元数据、存储过程等。只有在安装Service Pack之类的补丁时,数据库引擎才会写入resource数据库。

resource数据库是在SQL Server 2005才引入的,因此在SQL Server 2005及以后的版本中,安装Service Pack的速度明显比SQL Server 2000快。而且,一旦安装补丁失败,回滚到前一个版本的速度也很快。
这是因为,SQL Server 2005及以后的版本,可以直接用Resource数据库的副本覆盖旧的数据库。而SQL Server 2000需要运行很多脚本以删除旧的系统对象然后重建新的系统对象,需要的时间当然很长。

distribution数据库不是隐藏的,但是你首先得让这台服务器成为复制分发服务器。如果你的SQL Server没有配置“发布”,当然看不到distribution数据库。

教你管理SQL数据库(2)系统数据库和用户数据库

发布/订阅是SQL Server的另一大功能,我做DBA的时候很少用到,反而是developer们很关注这个功能。

转载文章地址:http://bbs.51cto.com/thread-1084955-1.html


WaterBear , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:教你管理SQL数据库(2)系统数据库和用户数据库
喜欢 (0)
[[email protected]]
分享 (0)