当前位置:首页 » 多媒体相关

一个关于双击存储过程的错误


我在打开数据库双击存储过程时出现这个错误,如下  
  错误20585:[sql-dmo]/******encryptend   object   is   transferable,and   script   can   not   be   generated,******/  
   
   
   
  是不是加密了,如是那是怎么加的密,如有密码,又怎么解密,  
 

推荐阅读

  • 上海新地集团倾情泛微e-cology [详细内容]
  • 苹果修复Mac10个可导致远程攻击的安全漏洞 [详细内容]
  • 推动正版软件普及 发展前景不明 企业软件频道 [详细内容]
  • Nielsen谈Blog可用性十宗罪 [详细内容]
  • V980上网设置 [详细内容]
  • 微软组建中国研发集团 今年至少再招800员工 [详细内容]
  • Blog的未来在哪里 [详细内容]
  • 网友回答:
    网友:pengdali

    原作:j9988   号:j老师  
      create     procedure   sp_decrypt_sp   (@objectname   varchar(50))  
      as  
      begin  
      declare   @objectname1   varchar(100)  
      declare   @sql1   nvarchar(4000),@sql2   nvarchar(4000),@sql3   nvarchar(4000),@sql4   nvarchar(4000),@sql5   nvarchar(4000),@sql6   nvarchar(4000),@sql7   nvarchar(4000),@sql8   nvarchar(4000),@sql9   nvarchar(4000),@sql10   nvarchar(4000)      
      declare     @origsptext1   nvarchar(4000),     @origsptext2   nvarchar(4000)   ,   @origsptext3   nvarchar(4000),   @resultsp   nvarchar(4000)  
      declare     @i   int   ,   @t   bigint  
      declare   @m   int,@n   int,@q   int  
      set   @m=(select   max(colid)   from   syscomments     where   id   =   object_id(@objectname))  
      set   @n=1  
      --get   encrypted   data  
      create   table     #temp(colid   int,ctext   varbinary(8000))  
      insert   #temp   select   colid,ctext   from   syscomments     where   id   =   object_id(@objectname)  
      set   @sql1=alter   procedure   +   @objectname   +   with   encryption   as    
      --set   @sql1=alter   procedure   +   @objectname   +   with   encryption   as    
      set   @q=len(@sql1)  
      set   @sql1=@sql1+replicate(-,4000-@q)  
      select   @sql2=replicate(-,4000),@sql3=replicate(-,4000),@sql4=replicate(-,4000),@sql5=replicate(-,4000),@sql6=replicate(-,4000),@sql7=replicate(-,4000),@sql8=replicate(-,4000),@sql9=replicate(-,4000),@sql10=replicate(-,4000)  
      exec(@sql1+@sql2+@sql3+@sql4+@sql5+@sql6+@sql7+@sql8+@sql9+@sql10)  
      while   @n<=@m  
      begin  
      set   @origsptext1=(select   ctext   from   #temp     where   colid=@n)  
      set   @objectname1=@objectname+_t  
      set   @origsptext3=(select   ctext   from   syscomments   where   id=object_id(@objectname)   and   colid=@n)  
      if   @n=1  
      begin  
      set   @origsptext2=create   procedure   +   @objectname   +   with   encryption   as   --  
      set   @q=4000-len(@origsptext2)  
      set   @origsptext2=@origsptext2+replicate(-,@q)  
      end  
      else  
      begin  
      set   @origsptext2=replicate(-,   4000)  
      end  
      --start   counter  
      set   @i=1  
      --fill   temporary   variable  
      set   @resultsp   =   replicate(na,   (datalength(@origsptext1)   /   2))  
       
      --loop  
      while   @i<=datalength(@origsptext1)/2  
      begin  
      --reverse   encryption   (xor   original+bogus+bogus   encrypted)  
      set   @resultsp   =   stuff(@resultsp,   @i,   1,   nchar(unicode(substring(@origsptext1,   @i,   1))   ^  
                                                                      (unicode(substring(@origsptext2,   @i,   1))   ^  
                                                                      unicode(substring(@origsptext3,   @i,   1)))))  
              set   @i=@i+1  
      end  
      --drop   original   sp  
      --execute   (drop   procedure   +   @objectname)  
      --remove   encryption  
      --preserve   case  
      set   @resultsp=replace((@resultsp),with   encryption,   )  
      set   @resultsp=replace((@resultsp),with   encryption,   )  
      set   @resultsp=replace((@resultsp),with   encryption,   )  
      if   charindex(with   encryption,upper(@resultsp)   )>0    
          set   @resultsp=replace(upper(@resultsp),with   encryption,   )  
      --replace   stored   procedure   without   enryption  
      print   @resultsp  
      --execute(   @resultsp)  
      set   @n=@n+1  
      end  
      drop   table   #temp  
      end  
      go  
       
      适合40000字符。  
      每次4000 print出来,自已贴。  
      切记:我见过的解过程都是对原过程进行破坏。破解前一定要备份!!!!  
      超过40000的,自已加sql  
      超长的可加sql11--sql20........

    .

    讨论区

    Login