数据库设计好以后,维护就是只要的问题,经常要查询些数据,查看当初定义好的字段是何意思。 用SP_Help去查看?又慢又要回想半天设计时的初衷。起始,只要设计时工作做足,就可以很方便在数据库的查阅当初的设计。 首先,我们在创建数据表的时候,就给表和每个字段加上中文注释。如下:
- CREATE TABLE Employee (
- EmpID int NOT NULL, -- 员工编号
- EmpName varchar(32), -- 员工姓名
- EmpPhone varchar(32), -- 员工电话
- EmpState int, -- 员工状态[1:在职2:离职]
- )
- ;
- ALTER TABLE Employee ADD CONSTRAINT PK_Employee
- PRIMARY KEY CLUSTERED (EmpID)
- ;
- EXEC sp_addextendedproperty 'MS_Description', '员工表', 'User', dbo, 'table', Employee
- ;
- EXEC sp_addextendedproperty 'MS_Description', '员工编号', 'User', dbo, 'table', Employee, 'column', EmpID
- ;
- EXEC sp_addextendedproperty 'MS_Description', '员工姓名', 'User', dbo, 'table', Employee, 'column', EmpName
- ;
- EXEC sp_addextendedproperty 'MS_Description', '员工电话', 'User', dbo, 'table', Employee, 'column', EmpPhone
- ;
- EXEC sp_addextendedproperty 'MS_Description', '员工状态[1:在职,2:离职]', 'User', dbo, 'table', Employee, 'column', EmpState
- ;
然后,再创建一个存储过程,如下:
- Create procedure DataDictionary_GetbyTableName
- @TableName varchar(32)
- as
- select b.[name] Tablename ,Isnull(c.[name],'Table') ColName ,convert(varchar(256),a.[value]) Description
- from sys.extended_properties a inner join sysobjects b on b.id = a.major_id
- left join syscolumns c on a.minor_id = c.colid and a.major_id = c.id
- where b.[name] = @TableName
最后,需要查看某张表的时候,执行一下该存储过程+表名。就可以了。如下:
- DataDictionary_GetbyTableName employee
得到的就是:
有没有感觉方便一点。