微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

批量加密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  上通过。  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐