內容來自網際網路,作者不明
drop procedure sp_decrypt
gocreate procedure sp_decrypt (@objectname varchar(50))
asbegin
begin transaction --add by playyuer
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 sys***ments 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 sys***ments 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 sys***ments 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)
endelse
begin
set @origsptext2=replicate('-', 4000)
end--start counter
set @i=1
--fill temporary variable
set @resultsp = replicate(n'a', (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
enddrop table #temp
endrollback transaction --add by playyuer
go
SQL 2000解密儲存過程
begin set origsptext1 select ctext from temp where colid n set objectname1 objectname t set origsptext3 select ctext from syscomments where id object ...
sql2000儲存過程
自 http www.cnblogs.com a13971240 archive 2008 10 22 1316747.html create proc getdataset tablelist varchar 200 搜尋表的欄位,比如 id,datatime,job 用逗號隔開 tablenam...
sql2000儲存過程
create proc getdataset tablelist varchar 200 搜尋表的欄位,比如 id,datatime,job 用逗號隔開 tablename varchar 30 搜尋的表名 selectwhere varchar 500 搜尋條件,這裡不用寫where,比如 job...
sql2000下 分頁儲存過程
set quoted identifier off goset ansi nulls on go 名稱 分頁儲存過程 使用示例 exec sp pageindex from stusources 2,10 注意 目前還沒有對輸入的引數進行嚴格的驗證 預設為輸入都是合法有效的 alter proc s...
C 呼叫sql 2000儲存過程
今天又有朋友問起關於c 呼叫儲存過程的問題,發現自己好久沒用,竟然也忘得差不多了 本來想直接把以前那片拿過來的,但是感覺還是重新寫一下讓自己印象深刻點。除錯環境 vs.net 2005,sql 2000,windows xp sp2。語言 c 呼叫帶輸入引數的儲存過程 首先自然是在查詢分析器裡建立一...