[原创]SQL Server2005中如何知道某个存储过程是否已加密?
2009-01-16 16:07
316 查看
最近在写一个小软件,需要知道当前那些存储过程已经被加密,如果被加密,则调用解密过程,将其解密,还原明文保存。基于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
好了,说到这里,我想各位已经很清楚知道如何解决本文开头所提出的问题!祝各位好运!
最初我就认为加密与不加密的存储过程肯定是一个标记位,存放在某个系统表中,但这个系统表在那里?我却不知道,曾通过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
好了,说到这里,我想各位已经很清楚知道如何解决本文开头所提出的问题!祝各位好运!
相关文章推荐
- 如何加密Oracle中的存储过程,从而在schema下看不到其源码?
- Oracle中存储过程执行大的Sql语句时如何查看sql是否正确
- SQL存储过程测试(8)——当待测存储过程没有返回值的时候 如何判断测试结果是否通过
- 存储过程中如何根据参数是否为空执行不同的select??
- 如何加密Oracle中的存储过程
- 有趣的密码加密策略,你知道自己的密码如何在网站中存储的吗?
- mysql数据库,存储过程中如何判断游标Cursor中结果集是否为空
- 如何查看SQL Server 2005使用with encryption 加密的存储过程或触发器,函数
- SQL存储过程测试(7)——当待测存储过程返回out参数时 如何判断测试结果是否通过
- 如何对所有存储过程进行一次性的加密?(来自CSDN)
- 如何迁移RDS中的加密存储过程
- 如何加密Oracle中的存储过程
- SQL存储过程测试(6)——当待测存储过程返回行集的时候 如何判断测试结果是否通过
- SQL 2000 存储过程如何加密,解密
- 如何判断存储过程中,T-SQL语句是否执行?
- 如何知道ADODB.COMMAND的execute是否成功
- 如何在MySQL存储过程中保留注释
- oracle存储过程中如何执行动态SQL语句
- 如何在sqlserver 的函数或存储过程中抛出异常。
- 每日一题(15) - 如何知道两个单链表(可能有环)是否相交