[原创]SQL Server2005中如何知道某个存储过程是否已加密?

 最近在写一个小软件,需要知道当前那些存储过程已经被加密,如果被加密,则调用解密过程,将其解密,还原明文保存。基于sql server2005解密已加密的存储过程,网上有成熟的代码可供参考,但如何通过sql 语句的方式知道当前数据库中的存储过程是否已加密呢??

 最初我就认为加密与不加密的存储过程肯定是一个标记位,存放在某个系统表中,但这个系统表在那里?我却不知道,曾通过google或msdn去查找,但没有找到相关资料,甚至准备写邮件咨询邹建等大侠....

  突然想到,原来经常利用sp_helptext查看某个未加密过程的明文,那如果用sp_helptext查看已加密的过程,会有什么反映呢。结果很明确,系统提示:对象***文件已加密!

 呵呵,既然sp_helptext知道这个过程已经加密,那我查看一下sp_helptext源码不就可以知道,它是如何判断出该过程是否已加密的吗?

 于是,输入:exec sp_helptext sp_helptext ,屏幕上果然输出sp_helptext的明文,从sp_helptext中我们很容易找到这行code:

     select text from syscomments where id = @objid and encrypted = 0............

   这段代码意思很明确,查询输出未加密的过程,那么我所需要的就是:

  select * from syscomments where  encrypted = 1 

 好了,说到这里,我想各位已经很清楚知道如何解决本文开头所提出的问题!祝各位好运!

转载于:https://www.cnblogs.com/gis_gps/archive/2009/01/16/1377133.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值