经常使用SQL Server数据库的朋友,可能主要精力都放在了如何对具体数据的查询和处理上,对数据库系统本身各种信息的获取用的并不多,等到用到的时候却又无从下手。
我这里把做一个整理,希望可以对您有所帮助。
获取所有用户名
select name from sysusers where status='2' and islogin='1' islogin='1' :表示帐户 islogin='0' :表示角色 status='2' :表示用户帐户 status='0' :表示糸统帐户获取所有数据库名
select name from master..sysdatabases order by name获取某个数据库所有表名
select name from 数据库名称..sysobjects where XType='U' order by name XType='U' :表示所有用户表 XType='S' :表示所有系统表获取某个表所有字段名
select name from syscolumns where id=Object_Id('表名'')获取数据库所有类型
select name from systypes获取某个表的主键字段
select name from syscolumns where id=Object_Id('表名') and colid=(select top 1 keyno from sysindexkeys where id=Object_Id('表名'))获取表字段的基本信息
select 字段名=rtrim), 主键=case when h.id is not null then 'PK' else '' end, 字段类型=type_name)+case when b.colstat&1=1 then '[ID(' + convert(varchar, ident_seed))+','+convert(varchar,ident_incr))+')]' else '' end, 长度=b.length, 允许空=case b.isnullable when 0 then 'N' else 'Y' end, 默认值=isnull, ''), 字段说明=isnull, '') from sysobjects a, syscolumns b left join sysproperties c on b.id = c.id and b.colid = c.smallid left join syscomments e on b.cdefault = e.id left join (select g.id, g.colid from sysindexes f, sysindexkeys g where ) and ) and ;0) and ;255) and ;2048)<>0) h on ) and ) where ) and ('要查询的表')) order by b.colid