目录
正确理解SQL Server元数据
每个SQL Server 实例(instance)在正确安装后,均可看到如下4个系统database:
master
model
msdb
tempdb
其中master包含了大量系统维护所需的基础信息表,即系统基表(system base tables),但需注意:这些系统基表不能通过SQL Server Management Studio直接查看,而需通过执行如下T-SQL方式查看;同时这些系统基表也不能直接使用(若直接select查询则会返回Msg 208错误提示),而需通过系统视图、系统函数等方式间接使用或者通过DAC(即Dedicated Admin Connection)连接查看使用:
--通过目录视图sys.objects查看系统基表
USE master;
SELECT name FROM sys.objects
WHERE type_desc = 'SYSTEM_TABLE';
--通过系统存储过程sp_help查看系统基表(不推荐)
sp_help
下面我们尝试通过SQL Server Management Studio开启DAC,并通过SQL Server Management Studio建立DAC,然后正确查询系统基表。
1.右点击[SQL Server实例]-然后选择[方面(facets)]
2.如下图所示,选择[外围应用配置器]-然后设置[remotedacenabled]为true,即开启远程DAC功能
3.打开SQL Server Management Studio,并选择[文件]-[新建]-[数据库引擎查询],然后在服务器名称填写:admin:完整计算机名\实例名,注意若SQL Server安装在windows域环境中,则此处应填写含域后缀的完整计算机名。
4.查询系统基表:sysiscols
在通过sp_help查看SQL Server系统基表时,我们会看到很多系统视图与系统存储过程,这些其实都是SQL Server的元数据(metadata)。
SQL Server中的master不仅包含这些系统基表,还包含了主要如下6类元数据,方便SQL Server管理:
兼容性视图(Compatibility views)
目录视图(Catalog views)
动态管理对象(Dynamic Management Objects)
信息架构视图(Information schema views)
系统函数(System functions)
系统存储过程(System stored procedures)
其中动态管理对象又可分成:动态管理视图(DMVs)与动态管理函数。
若想简单区分上述各种类型的元数据,可查看文章”SQL Server 2012 Metadata“。
下图截取自《Microsoft SQL Server 2012 Internals》 - chapter 1,展示了SQL Server2012中各种元数据相互间的层次结构
详细内容可查看SQL Server 2012 System Views Map
参考资料
《Microsoft SQL Server 2012 Internals》 - chapter 1
System Base Tables
https://msdn.microsoft.com/en-us/library/ms179503.aspxSQL Server 2012 System Views Map
https://www.microsoft.com/en-us/download/details.aspx?id=39083SQL Server 2012 Metadata
http://www.codeproject.com/Tips/892216/SQL-Server-MetadataHow to: Use the Dedicated Administrator Connection with SQL Server Management Studio
https://technet.microsoft.com/en-us/library/ms178068(v=sql.105).aspx
update by HyperWang at 2016/03/15