加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

批量加密SQLSERVER 2000 的存储过程

发布时间:2020-12-12 15:05:02 所属栏目:MsSql教程 来源:网络整理
导读:/*批量加密SQLSERVER ?2000 ?的存储过程 ?/* ??? ?? ?? ??摘自:微软官方网站 ?*/ ?======================================================================================= ?下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。 ??

/*批量加密SQLSERVER ?2000 ?的存储过程 ?/* ??? ?? ?? ??摘自:微软官方网站 ?*/ ?======================================================================================= ?下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。 ??DECLARE ?@sp_name ?nvarchar(400) ?DECLARE ?@sp_content ?nvarchar(2000) ?DECLARE ?@asbegin ?int ?declare ?@now ?datetime ?select ?@now ?= ?getdate() ?DECLARE ?sp_cursor ?CURSOR ?FOR ? ?SELECT ?object_name(id) ?FROM ?sysobjects ?WHERE ?xtype ?= ?'P' ? ?AND ?type ?= ?'P' ? ?AND ?crdate ?< ?@now ?AND ?OBJECTPROPERTY(id,?'IsMSShipped')=0 ??OPEN ?sp_cursor ??FETCH ?NEXT ?FROM ?sp_cursor ? ?INTO ?@sp_name ??WHILE ?@@FETCH_STATUS ?= ?0 ?BEGIN ?SELECT ?@sp_content ?= ?text ?FROM ?syscomments ?WHERE ?id ?= ?OBJECT_ID(@sp_name) ? ?SELECT ?@asbegin ?= ?PATINDEX ?( ?'%AS' ?+ ?char(13) ?+ ?'%',?@sp_content) ? ?SELECT ?@sp_content ?= ?SUBSTRING(@sp_content,?1,?@asbegin ?- ?1) ? ?+ ?' ?WITH ?ENCRYPTION ?AS' ?+ ?SUBSTRING ?(@sp_content,?@asbegin+2,?LEN(@sp_content)) ?SELECT ?@sp_name ?= ?'DROP ?PROCEDURE ?[' ?+ ?@sp_name ?+ ?']' ?EXEC ?sp_executesql ?@sp_name ? ?EXEC ?sp_executesql ?@sp_content ?FETCH ?NEXT ?FROM ?sp_cursor ? ?INTO ?@sp_name ?END ??CLOSE ?sp_cursor ? ?DEALLOCATE ?sp_cursor ??该存储过程利用了 ?sysobjects ?和 ?syscomments ?表,并巧妙地修改了原存储过程的 ?SQL ?定义语句,将 ?AS ?修改为了 ?WITH ?ENCRYPTION ?AS,从而达到了加密存储过程的目的。本存储过程在 ?SQL ?Server ?2000 ?上通过。??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读