[整理]SQL Server 常识和技巧

1、查找注释 

        select o.name TableName,c.name ColName,p.value Remark from sysproperties p
join sysobjects o on p.id=o.id
join syscolumns c on o.id=c.id and c.colid=p.smallid
where p.name='MS_Description' --MS_Description表示微软注释
and c.name='col'   --列名
and o.name='TABLE1'   --表名

2、 利用SQL Server的扩展属性象access一样显示列的注释

access的设计视图有个不错的功能-----设计列的注释,这可以让设计者清楚地看到每个列的意义。一般的sql server建表时没有这个功能,但是他有扩展属性,这个功能也不错,可以把注释写到这里面,然后把相应的结果作为rs返回到页面进行应用
我想,这在动态显示数据库的table的列信息时候可能比较有用(记得好像以前论坛里也有人问到过)

具体方法如下:(也可以在EM,QA里面通过右击相应列---扩展属性,进行添加)

EXEC sp_addextendedproperty 'CRid', '表示ID', 'user', dbo, 'table', 'clientInfo', 'column',CRid
go
EXEC sp_addextendedproperty '人名', '显示客户姓名', 'user', dbo, 'table', 'clientInfo', 'column',Rname
go

select name,value from ::fn_listextendedproperty
(default,'user','dbo','table','clientInfo','column',default)

go

name value
---------------------------------------------
CRid 表示ID
人名 显示客户姓名

这样就可以当作结果集用了

这里吧 系统多表值函数 fn_listextendedpeoperty简单说一下
  查询的时候,因为是系统多表值函数所以前面必须有 ::
  第1个是指定属性名称----如果用default或者NULL显示全部
  第2-7个参数,可以参看sql的对象命名规则
  如果用default也是指定全部

3、查询表结构

    可以使用内置的存储过程sp_MShelpcolumns。
    如查询表B_RWZL的结构:
    sp_MShelpcolumns 'dbo.B_RWZL'

4、查询清单

    表清单
    select [name] from sysobjects where xType = 'U'

    主健清单
    select [name] from sysobjects where xType = 'PK'

    select table_name,column_name,1as pk  from
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE k where exists
( select s.id from sysobjects s where s.xtype = 'pk' and s.name = k.constraint_name )

    外键清单
    select [name] from sysobjects where xType = 'F'

    select table_name,column_name,1as fk  from
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE k where exists
( select s.id from sysobjects s where s.xtype = 'F' and s.name = k.constraint_name )

    默认值清单
    select [name] from sysobjects where xType = 'D'

    表的列清单
    select [name] from syscolumns where id in (  select id from sysobjects where [name]='Table1')

5 防止注入式攻击
   

ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
InBlock.gif        
/// 对字符串进行sql格式化,替换掉里面的单引号
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="str">要转换的字符串</param>
ExpandedBlockEnd.gif        
/// <returns>格式化后的字符串</returns>

None.gif          public   static   string  ToSql( string  str) 
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if(str == null
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return "";
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return str.Replace("'","''");
ExpandedBlockEnd.gif        }



6 Like查询的时候转义
           

ExpandedBlockStart.gif ContractedBlock.gif   /**/ /// <summary> 
InBlock.gif        
/// 对字符串进行sql格式化,并且符合like查询的格式。 作者:Ocean
InBlock.gif        
/// </summary> 
InBlock.gif        
/// <param name="str">要转换的字符串</param> 
ExpandedBlockEnd.gif        
/// <returns>格式化后的字符串</returns> 

None.gif          public   static   string  ToLikeSql( string  sqlstr)  
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif
InBlock.gif            
if (sqlstr == null)  return ""
InBlock.gif            StringBuilder str 
= new StringBuilder(sqlstr); 
InBlock.gif            str.Replace(
"'","''"); 
InBlock.gif            str.Replace(
"[","[[]"); 
InBlock.gif            str.Replace(
"%","[%]"); 
InBlock.gif            str.Replace(
"_","[_]"); 
InBlock.gif            
return str.ToString(); 
ExpandedBlockEnd.gif        }
 
None.gif


 

转载于:https://www.cnblogs.com/QuitGame/archive/2005/05/18/158155.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值