sysobjects 表结构:
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 对象名,常用列 |
id | int | 对象标识号 |
xtype | char(2) |
对象类型,常用列。 xtype 可以是下列对象类型中的一种: D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) X = 扩展存储过程 |
uid | smallint | 所有者用户对象编号 |
info | smallint | 保留。仅限内部使用 |
status | int | 保留。仅限内部使用 |
base_schema_ ver | int | 保留。仅限内部使用 |
replinfo | int | 保留。供复制使用 |
parent_obj | int | 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。 |
crdate | datetime | 对象的创建日期。 |
ftcatid | smallint | 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0 |
schema_ver | int | 版本号,该版本号在每次表的架构更改时都增加。 |
stats_schema_ ver | int | 保留。仅限内部使用。 |
type | char(2) |
对象类型。可以是下列值之一: D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 IF = 内嵌表函数 K = PRIMARY KEY 或 UNIQUE 约束 P = 存储过程 R = 规则 RF = 复制筛选存储过程 TF = 表函数 TR = 触发器 U = 用户表 V = 视图 X = 扩展存储过程 |
userstat | smallint | 保留。 |
sysstat | smallint | 内部状态信息 |
indexdel | smallint | 保留 |
refdate | datetime | 留用 |
version | int | 保留 |
deltrig | int | 保留 |
instrig | int | 保留 |
updtrig | int | 保留 |
seltrig | int | 保留 |
category | int | 用于发布、约束和标识 |
cache | smallint | 保留 |
1.所有数据库名称
- select name from sys.databases where name not in ('master','model','msdb','tempdb')
2. 查看某数据库的所有表
- select objects.name
- from [CRM].sys.objects
- inner join [CRM].dbo.sysindexes on objects.object_id=sysindexes.id
- and sysindexes.indid<=1
- where type='U'
- order by objects.name
3.查看表结构
- SELECT
- 表名 = case when a.colorder=1 then d.name else '' end,
- 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
- 字段序号 = a.colorder,
- 字段名 = a.name,
- 标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
- 主键 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
- SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
- 类型 = b.name,
- 占用字节数 = a.length,
- 长度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
- 小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
- 允许空 = case when a.isnullable=1 then '√'else '' end,
- 默认值 = isnull(e.text,''),
- 字段说明 = isnull(g.[value],'')
- FROM syscolumns a left join systypes b
- on a.xusertype=b.xusertype
- inner join sysobjects d
- on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
- left join syscomments e
- on a.cdefault=e.id
- left join sys.extended_properties g
- on a.id=g.major_id and a.colid=g.minor_id
- left join sys.extended_properties f
- on d.id=f.major_id and f.minor_id=0
- --where d.name= 'Activities' --如果只查询指定表,加上此条件
- order by a.id,a.colorder
4.各字段元数据
- select * from sys.dm_exec_describe_first_result_set (N'SELECT * FROM dbo.TabName', NULL, 0)
5.索引 主键/类型/列 情况
- ;with tb as(
- SELECT tbl.name AS TableName,i.name AS IndexName,clmns.name AS ColumName,i.is_primary_key AS isPrimaryKey,i.type_desc
- FROM sys.tables AS tbl
- INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
- INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0
- AND (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0))
- AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id)
- INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id
- WHERE SCHEMA_NAME(tbl.schema_id) = N'dbo'
- )
- SELECT DISTINCT TableName,IndexName,isPrimaryKey,type_desc
- ,STUFF((SELECT ','+ColumName FROM tb B WHERE A.TableName=B.TableName AND A.IndexName=B.IndexName FOR XML PATH('')),1,1,'') AS ColumName
- FROM tb A ORDER BY TableName,IndexName,isPrimaryKey,type_desc