一、常见系统表
systypes 一行纪录了每一个由系统提供的和用户定义的数据类型
sysusers 一行记录了一行记录了一个数据库的合法用户
sysconfigures 一行纪录了用户可以设置的配置参数
syscurconfigs 有关SQL Server当前正使用的配置参数情况
sysdatabases 一行纪录SQL Server中的一个数据库
sysdevices 一行纪录数据库每一个磁带转储设备,盘转储设备,数据库设备和磁盘分区
syslocks 有关动态锁的情况
syslogins 一行纪录了每一个有效的SQL Server的用户
sysmessages 一行记录了每一个系统错误或者警告
sysprocesses 有关server进程的情况
sysremotelogins 一行记录了一个远程用户
sysservers 一行记录了一个远程server
sysusages 一行记录了分配给每个数据库的每个磁盘分片
sysatterrates 一行记录了分配给SQL Server用户在当前数据库的标识
syscolumns 一行记录了一个表或视图的每一列,一个存储过程的每一个参数
syscomments 一行或者多行记录了每一视图、规则、缺省值、触发器和存储过程
sysdepends 一行记录了由一个过程、视图或者触发器所参照的每一个过程、视图或者表
sysindexes 一行记录了每一个聚集或者非聚集索引,每一个不带索引的表,含有text或者image列的表
syskeys 一行记录了每一个主玛、外玛或者公用玛
syslogs 事务日志
sysobjects 纪录表、视图、存储过程、规则、缺省值、触发器和临时表(在tempdb中)
sysprocedures 纪录视图、规则、缺省值、触发器和过程
sysprocts 纪录用户权限信息
syssegments 纪录每一个片段(命名的磁盘)
二、系统表应用
1、根据内容模糊查询,涉及哪些相关过程
select distinct name
from sysobjects o, syscomments s
where o.id = s.id
and text like ‘%aa%’
and o.type = ‘P’
2、检查锁资源使用情况
select fid, spid, loid, locktype = v1.name,
page, row,
objectName = rtrim(db_name(dbid)) + ‘…’ +
rtrim(object_name(id,dbid)),id,
class, context=v2.name
from master…syslocks l,
master…spt_values v1,
master…spt_values v2
where l.type = v1.number
and v1.type = “L”
and (l.context+2049) = v2.number
and v2.type = “L2”
order by fid, spid, loid, objectName, page,
row, locktype
3、查询占用空间最多的前250张表
Select top 250 name,used_pages(db_id(),id)/(1024.0/(@@maxpagesize/1024.0)) as “Used MB”
from sysobjects
order by used_pages(db_id(),id) desc
4、查询表结构
SELECT
DB_NAME() database_name,
CASE A.type
WHEN ‘S’
THEN ‘System Table’
WHEN ‘U’
THEN ‘User Table’
WHEN ‘V’
THEN ‘View’
WHEN ‘P’
THEN ‘Stored Procedure’
WHEN ‘SF’
THEN ‘Function’
WHEN ‘TR’
THEN ‘Trigger’
WHEN ‘RI’
THEN ‘Referential Integrity’
WHEN ‘D’
THEN ‘Defualt’
END object_type,
B.name+’.’+A.name object_name,
C.colid,
C.name column_name,
C.length column_length,
D.name column_type,
case C.status when 8 then ‘是’ else '否’end BENULL
FROM
dbo.sysobjects A
inner JOIN
sysusers B
ON
A.uid=B.uid
AND A.type=‘U’
AND B.name=‘dbo’
inner JOIN
syscolumns C
ON
A.id=C.id
inner JOIN
dbo.systypes D
ON
C.usertype=D.usertype
WHERE 1=1
ORDER BY
A.type,
B.name,
A.name
5、获取进程相关信息
SELECT TOP 40* FROM master.sysprocesses WHERE spid=?
6、获取所有数据库信息
select dbid,name from master…sysdatabases
7、获取存储
SELECT object_name( id ) FROM .syscomments
where text like ‘%起租%’
group by id
8、查看正在运行的进程
SELECT TOP 100 * FROM master.dbo.sysprocesses
WHERE status like ‘running’
9、查看库中相关的表、视图、存储等
SELECT TOP 100 * FROM sysobjects
where type=‘F’
10、获取本机名称
select host_name()
11、关于本机的运行进程
SELECT TOP 100 * FROM master.dbo.sysprocesses
WHERE hostname=host_name()
12、获取索引和表的方法
SELECT TOP 255
o.name tabName,i.name indName,
o.id id,
i.keys1 keys1,
i.keys2 keys2,
i.keycnt keycnt,
i.status status
from sysindexes i,sysobjects o
where keycnt>0 and i.id=o.id and o.type=‘U’
13、元数据 索引 表名 列名
SELECT TOP 255 Z.name tabName,A.name indName,
index_col(object_name(A.id),A.indid,A.keycnt-1) colName
FROM dbo.sysobjects Z,sysindexes A
where Z.id=A.id AND Z.type=‘U’
AND A.keycnt>1 AND A.keys1 is not NULL
order by Z.name ,A.name