资源描述:
《存储过程批量加密,解密》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、--参考:下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。DECLARE@sp_namenvarchar(400)DECLARE@sp_contentnvarchar(2000)DECLARE@asbeginintdeclare@nowdatetimeselect@now=getdate()DECLAREsp_cursorCURSORFORSELECTobject_name(id)FROMsysobjectsWHERExtype='P'ANDtype='P'ANDcrdate<@nowANDOBJECTPROPERTY(id,'IsM
2、SShipped')=0OPENsp_cursorFETCHNEXTFROMsp_cursorINTO@sp_nameWHILE@@FETCH_STATUS=0BEGINSELECT@sp_content=textFROMsyscommentsWHEREid=OBJECT_ID(@sp_name)SELECT@asbegin=PATINDEX('%AS'+char(13)+'%',@sp_content)SELECT@sp_content=SUBSTRING(@sp_content,1,@asbegin-1)+'WITHENCRYPTIONAS'+SUBS
3、TRING(@sp_content,@asbegin+2,LEN(@sp_content))SELECT@sp_name='DROPPROCEDURE['+@sp_name+']'EXECsp_executesql@sp_nameEXECsp_executesql@sp_contentFETCHNEXTFROMsp_cursorINTO@sp_nameENDCLOSEsp_cursorDEALLOCATEsp_cursor该存储过程利用了sysobjects和syscomments表,并巧妙地修改了原存储过程的SQL定义语句,将AS修改为了WITHENCR
4、YPTIONAS,从而达到了加密存储过程的目的。本存储过程在SQLServer2000上通过。存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)--*//*--调用示例:--解密指定存储过程execsp_decrypt'存储过程名'--*/createPROCEDUREsp_decrypt(@objectNamevarchar(50))ASbeginbegintrandeclare@objectname1varchar(100),@orgvarbinvarbinary(8000)declare@sql1nvarchar(4000
5、),@sql2nvarchar(4000),@sql3nvarchar(4000),@sql4nvarchar(4000),@sql5nvarchar(4000),@sql6nvarchar(4000),@sql7nvarchar(4000),@sql8nvarchar(4000),@sql9nvarchar(4000),@sql10nvarchar(4000)DECLARE@OrigSpText1nvarchar(4000),@OrigSpText2nvarchar(4000),@OrigSpText3nvarchar(4000),@resultspnv
6、archar(4000)declare@iint,@statusint,@typevarchar(10),@parentidintdeclare@colidint,@nint,@qint,@jint,@kint,@encryptedint,@numberintselect@type=xtype,@parentid=parent_objfromsysobjectswhereid=object_id(@ObjectName)createtable#temp(numberint,colidint,ctextvarbinary(8000),encryptedint
7、,statusint)insert#tempSELECTnumber,colid,ctext,encrypted,statusFROMsyscommentsWHEREid=object_id(@objectName)select@number=max(number)from#tempset@k=0while@k<=@numberbeginifexists(select1fromsyscommentswhereid=object_id(@objectname)andnumber=@k)beginif@type='P'set@sql1=(casewhen@nu
8、mber>1then'ALTERPROCEDURE'+@objec