日度归档:2017年7月13日

MSSQL 系统函数-元数据 元数据函数 (一)


1 Col_length 函数简介

功能:
返回当前数据库中指定表,指定列的 所占用的字节长度
参数:
表名 列名
返回值:
interger
当前列名所占用的字节长度


create table A(keyId int ,info varchar(120))
go
select COL_LENGTH('A','keyId') as [keyID字节长度],COL_LENGTH('A','info') as [info字节长度]
go
truncate table A
drop table A

注意事项:
当表名或列名不存在时,返回NULL


2 Col_Name 函数简介

功能:
根据表ID 和列ID 返回列名
参数:
表ID 列ID
返回值:
nvarchar(128)位的列名
不存在数据时,返回NULL

 create table A(keyId int ,info varchar(120))
go
 
 SELECT COL_NAME(OBJECT_ID('A'), 1) AS '列名',COL_NAME(455,88) as [ID异常返回NULL];
 
 truncate table A
 drop table A 



3 Columnproperty 函数简介

功能:
检测列定义的属性,如果存在此属性,则返回1 否则返回0 ,无效属性则返回NULL
参数:
表ID
列名称
列属性值

常见的列属性如下所示:
AllowsNull 是否允许空值
columnId 通过表id 列名 获取列Id
IsComputed 是否为计算列
IsFulltextIndexed 列是否注册为全文索引
IsIdentity 是否为标识列
IsIdNotForRepl 列插入前是否标识列
IsIndexable 是否可以对列进行计算
IsPrecise 列是否为精确列
IsRowGuidCol 列是否具有guid属性
Scale 列的小数位数
IsXmlIndexable 是否可以在xml索引中使用此列
Precision 列数据长度

返回值:
1:存在此属性
0:不存在此属性
NULL 此属性名异常

 create table A(keyId int ,info varchar(120))
go
  
 /*通过列属性获取表相关属性*/
 select COLUMNPROPERTY ( OBJECT_ID('A') ,'keyId', 'columnId' ) as [获取列名],
  COLUMNPROPERTY ( OBJECT_ID('A') ,'keyId', 'noProperty')as [异常属性],
   COLUMNPROPERTY ( OBJECT_ID('A') ,'keyId', 'IsComputed')as [是否为计算列],
      COLUMNPROPERTY ( OBJECT_ID('A') ,'info', 'Precision')as [获取列数据类型长度]
  go
 truncate table A
 drop table A 


相关阅读:
元数据函数简介

MSSQL 获取存储过程最后一次修改时间


由于系统开发中涉及多人开发,有些同事忘记将存储过程嵌入代码管理器(TFS)时。
当我们为系统制作升级包时,此时无法知道那些存储过程被修改过,
此时我们可以通过查看系统表来获取存储过程最后一次修改时间。

   /*
实验环境:
MSSQL server 2008 SP1
*/

---方法1 通过系统表 获取用户创建的"全部存储过程"最后一次修改时间

select * from   sys.all_objects where type='P'  and is_ms_shipped=0 order by modify_date desc


---方法2 通过存储过程表 获取用户创建的"全部存储过程"最后一次修改时间

select * from sys.procedures   where  is_ms_shipped=0 order by modify_date desc 

---方法 获取指定的存储过程修改时间  只需在查询条件后面加入 name条件,如下所示
 
select * from sys.procedures   where  name ='存储过程名称' and  is_ms_shipped=0 order by modify_date desc 
 


扩展内容:
如何查看数据库其它对象(表 索引 视图 主键 外键 默认值 等等)最后一次修改时间


select * from sys.all_objects where is_ms_shipped=0 order by modify_date desc