一、系统表

数据字典的详细信息请查SQL SERVER BOL,这里仅列出一部分。

1.1、sysservers

1、查看所有本地服务器及链接服务器

select * from master..sysservers

1.2、sysdatabases

1:查询非sa创建的所有数据库

select * from master..sysdatabases

where sid not in(select sid from master..syslogins where name='sa')

--或者

select dbid, name AS DB_NAME from master..sysdatabases

where sid <> 0x01

1.3、sysobjects

1:获取当前数据库中的所有用户表

select name from sysobjects where xtype='U' and status>0

为什么要加status>0,因为表dtproperties,虽然该表的xtype为U,实质上它是系统表。

dtproperties这个表里保存的是关系图,如果没建关系图,就是空的。

注意:这个表只是数据库对象的属性,如果想要看表、索引详细的属性,查看sysindexes。

2:查看当前数据库中所有存储过程

select name as 存储过程名称 from sysobjects where xtype='P' and status>0

为什么要加status>0,是为了去掉当前数据库中的系统存储过程。

注:该系统表中type与xtype的区别是什么?

Type是在SQL SERVER 6.0就有的,xType在SQL SERVER 7.0才出现,Type的保留只是为了向后兼容。每种数据库对象的类型详见SQL SERVER BOL。

1.4、syscolumns

1:获取表或视图的所有字段,存储过程或函数的所有参数

select name from syscolumns where id=object_id('表名')

1.5、sysproperties

1:怎么把SQL SERVER中表设计和表注释读出来

--表的注释全在sysproperties里

select b.name,value from sysproperties as a,sysobjects as b

where a.id=b.id and b.name='表名'

1.6、sysindexes

1:根据聚集索引,快速查询表的行数

SELECT rowcnt,indid FROM sysindexes WHERE id=OBJECT_ID('tableName')and indid < 2

注意:使用这种方法可能不精确,因为系统的统计信息在某些时候不一定是准确的。关于统计的维护(dbcc updateusage()),详见《SQL SERVER 性能优化——查询优化》series。

2:查看索引表信息

select

table_Name=sysobjects.Name,

index_Name=sysindexes.Name,

Type=sysobjects.type,

分配索引页=sysindexes.reserved,

使用索引页=sysindexes.used,

叶子层页=sysindexes.Dpages,

非叶子层页=sysindexes.used-sysindexes.Dpages,

rows=sysindexes.rowcnt

from sysindexes left outer join sysobjects on sysindexes.id=sysobjects.id

where sysindexes.indid>0 and sysindexes.indid<255 and sysindexes.status & 64=0

注意:若发现非叶子层的页数为负数,最好是运行DBCC UPDATEUSAGE ('dbname','tbname','ixname')来更新一下sysindexes的信息

1.7、syslogins

SQL SERVER 服务器的登录信息,比如:sa,有关登录、用户、角色的信息详见《SQL SERVER 2000 管理——安全——用户权限》。

select * from syslogins

select * from sysxlogins

sysxlogins是syslogins的精简版,BOL中没有说明,不推荐使用。

 

1.8、sysprocesses

1:查看用户进程信息

select spid,uid,syslogins.name,login_time,net_address from sysprocesses,syslogins where sysprocesses.sid=syslogins.sid

2:查看数据库启动时间

select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1

1.9、sysdepends

1:查看与某一个表相关的视图、存储过程、函数

select * from sysdepends where depid=object_id('表名')

--或者

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

注意:这种查法,只适用在没有with Encryption选项,即没有加密该对象时。

--或者

sp_depends

注意:这个表的统计信息并不准确,没有什么好的办法,查询结果只可用于参考。

1.10、sysmessages

SQL SERVER返回的内部错误都有在这里,可自行定义进行错误的添加,但一般我习惯于新建一个错误的表来定义自己程序中的错误。

select * From master..sysmessages where error=5037

1.11、sysfiles、sysfilegroups

1、查询当前数据库的文件使用情况

select name,filename,size/128 as 'used(M)',case maxsize/128 when 0 then 'no limit' else cast(maxsize/128 as varchar(10))end as 'total(M)' from sysfiles

2、查询当前数据库的表所在文件组

select distinct a.id,a.name,b.groupid,c.groupname from sysobjects a inner join sysindexes b on a.id=b.id

inner join sysfilegroups c on b.groupid=c.groupid

where a.xType='U' and a.status>0 order by a.name

sysfiles1是sysfiles的精简版,BOL中没有说明,不推荐使用。

二、系统视图

在master数据库中有INFORMATION_SCHEMA和system_function_schema两个用户,它们的登录是<无>,这是系统内置的两个用户。

INFORMATION_SCHEMA拥有自已的视图,在SQL Server 2000中没有被广泛使用,因为很多时候都可以从系统表中得到我们想要的结果,同样到了SQL Server 2005中,被广泛使用的仍然是sys所拥有的视图,SQL Server 2005的相关内容详见后续《SQL Server 2005》series文章。举例如下:

1、查询某个表的哪些字段不允许为空

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS

where IS_NULLABLE='NO' and TABLE_NAME='stb_User'

2、查询某个表的键约束

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE

where TABLE_NAME='stb_User'

注:键约束,是指除了CHECK、NOT NULL外的约束,即PK,FK,UNIQUE,DEFAULT不是约束。

SQL Server 2000 ——系统表和系统视图相关推荐

  1. SQL SERVER 创建所有表with nolock视图,用于读写分离

    执行一下SQL脚本 IF object_id('tempdb..#tempString1') is not null BeginDROP TABLE #tempString1; END --DROP ...

  2. SQL Server 2000 索引视图提高性能2

    创建索引视图 创建索引视图所需的步骤与视图的成功实现密不可分. 确保将在视图中引用的所有现有表的 SET 选项都正确. 创建任何新表和视图之前,确保会话的 SET 选项已正确设置. 确保视图定义是确定 ...

  3. Java/JSP中使用JDBC连接SQL Server 2000/2005

    转自:http://hi.baidu.com/huangdonghui/blog/item/87cf4ff47ba653e37609d7e1.html/cmtid/9c82350965721ba22e ...

  4. 在SQL Server 2000 和SQL Server 2005中导出表结构

    SQL Server 2000 SELECT     表名       = case when a.colorder=1 then d.name else '' end,     表说明     = ...

  5. [转载] sql server 2000系统表解释

    sql server 2000系统表解释 汇总了几个比较有用的系统表,内容摘自联机帮助 sysobjects --------------- 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过 ...

  6. 转:[MSSQL] - SQL Server 2000 系统表详细说明

    转:http://blog.csdn.net/ztf007/archive/2007/10/20/1834168.aspx SQL Server 2000 系统表详细说明 sysaltfiles  主 ...

  7. window xp系统安装php环境_Windows Server 2003及XP系统如何安装SQL Server 2000数据库?

    年头年初节假日就是小编的梗,忙得不可开交,这不越冷越刮风昨天服务器又崩了,折腾了一天安装好Windows Server 2003和IIS(这系统是有点老了,主要是单位机子和各系统也有点年头了,没办法) ...

  8. WIN2003 X64 系统上安装sql server 2000 的步骤

    SQL Server 2000 安装 要在 64 位操作系统上安装此应用程序,请使用以下步骤: 浏览至 SQL Server 2000 安装点 安装 SQL Server 2000: 双击" ...

  9. sql2000 指定的服务器不存在,SQL Server 2000服务无法启动,提示“系统找不到指定的文件”解决方法及sp4安装不上...

    SQL Server 服务管理器中无法启动SQL,提示"系统找不到指定的文件".其原因是: 在SQL的安装目录(X:\X..X\Microsoft SQL Server\MSSQL ...

最新文章

  1. 怎么安装MYSQL5.0的JDBC驱动
  2. C++ builder 的文件读写操作总结
  3. Linux 手动安装Ettercap
  4. spring----注解
  5. flutter字体不跟随系统_Flutter自定义字体无法加载
  6. Android 使用数据库 SQlite
  7. 【DevCloud · 敏捷智库】Scrum和看板如何选择
  8. 关于QQ非会员发图限制
  9. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——G题 贪吃的派蒙
  10. Python下载prettyloaded的swf
  11. 公钥和私钥,数字签名
  12. fas怎么翻译成lisp_fas文件格式研究
  13. 瑞幸咖啡的社群商业创新案例:私域流量池思维与裂变营销,品牌与流量双赢!...
  14. 后端Web开发框架(Java)
  15. 牛客网--16128--小名的回答
  16. 08-词嵌入(Word embeddings)
  17. 苹果刷机未知错误75_徐州苹果售后维修中心
  18. 微信授权登录基本流程(网站应用)
  19. fork客户端mac使用教程
  20. php fpm 错误日志在哪,php fpm如何开启错误日志

热门文章

  1. 计算机任务类别 搜索服务,服务删除后仍要求启动 计划任务里找不到 该怎么办...
  2. python表单验证_python表单验证封装
  3. linux下如何运行脚本程序设计,Uboot 如何运行脚本
  4. 一加3支持android9吗,不忘老用户!一加3更新Android 9,网友:真的不将就
  5. mysql show_db 权限_菜鸟课堂:MySQL权限的详细解答
  6. datatable更新到mysql_.NET_使用DataTable更新数据库(增,删,改),1、修改数据复制代码 代码如 - phpStudy...
  7. vector 插入_Java学习五分钟系列:对比Vector、ArrayList、LinkedList
  8. 多用户用linux会很卡顿吗,新手学Linux系统,解决Linux系统卡顿的方法
  9. 20220227:力扣第282场周赛(上)
  10. wxpython嵌入图片_将图片文件嵌入到wxpython代码中的实现方法