日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

查看SQL SERVER 加密存储过程,函数,触发器,视图

發(fā)布時間:2023/12/31 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查看SQL SERVER 加密存储过程,函数,触发器,视图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
create??PROCEDURE?sp_decrypt(@objectname?varchar(50))
AS
begin
set?nocount?on
--CSDN:j9988?copyright:2004.07.15?
--
V3.2?
--
破解字節(jié)不受限制,適用于SQLSERVER2000存儲過程,函數(shù),視圖,觸發(fā)器
--
修正上一版"視圖觸發(fā)器"不能正確解密錯誤
--
發(fā)現(xiàn)有錯,請E_MAIL:CSDNj9988@tom.com
begin?tran
declare?@objectname1?varchar(100),@orgvarbin?varbinary(8000)
declare?@sql1?nvarchar(4000),@sql2?varchar(8000),@sql3?nvarchar(4000),@sql4?nvarchar(4000)
DECLARE??@OrigSpText1?nvarchar(4000),??@OrigSpText2?nvarchar(4000)?,?@OrigSpText3?nvarchar(4000),?@resultsp?nvarchar(4000)
declare??@i?int,@status?int,@type?varchar(10),@parentid?int
declare?@colid?int,@n?int,@q?int,@j?int,@k?int,@encrypted?int,@number?int
select?@type=xtype,@parentid=parent_obj?from?sysobjects?where?id=object_id(@objectname)

create?table??#temp(number?int,colid?int,ctext?varbinary(8000),encrypted?int,status?int)
insert?#temp?SELECT?number,colid,ctext,encrypted,status?FROM?syscomments??WHERE?id?=?object_id(@objectname)
select?@number=max(number)?from?#temp
set?@k=0

while?@k<=@number?
begin
if?exists(select?1?from?syscomments?where?id=object_id(@objectname)?and?number=@k)
begin
if?@type='P'
set?@sql1=(case?when?@number>1?then?'ALTER?PROCEDURE?'+?@objectname?+';'+rtrim(@k)+'?WITH?ENCRYPTION?AS?'
??????????????????????????
else?'ALTER?PROCEDURE?'+?@objectname+'?WITH?ENCRYPTION?AS?'
??????????????????????????
end)

if?@type='TR'
begin
declare?@parent_obj?varchar(255),@tr_parent_xtype?varchar(10)
select?@parent_obj=parent_obj?from?sysobjects?where?id=object_id(@objectname)
select?@tr_parent_xtype=xtype?from?sysobjects?where?id=@parent_obj
if?@tr_parent_xtype='V'
begin
set?@sql1='ALTER?TRIGGER?'+@objectname+'?ON?'+OBJECT_NAME(@parentid)+'?WITH?ENCRYPTION?INSTERD?OF?INSERT?AS?PRINT?1?'
end
else
begin
set?@sql1='ALTER?TRIGGER?'+@objectname+'?ON?'+OBJECT_NAME(@parentid)+'?WITH?ENCRYPTION?FOR?INSERT?AS?PRINT?1?'
end

end
if?@type='FN'?or?@type='TF'?or?@type='IF'
set?@sql1=(case?@type?when?'TF'?then?
'ALTER?FUNCTION?'+?@objectname+'(@a?char(1))?returns?@b?table(a?varchar(10))?with?encryption?as?begin?insert?@b?select?@a?return?end?'
when?'FN'?then
'ALTER?FUNCTION?'+?@objectname+'(@a?char(1))?returns?char(1)?with?encryption?as?begin?return?@a?end'
when?'IF'?then
'ALTER?FUNCTION?'+?@objectname+'(@a?char(1))?returns?table?with?encryption?as?return?select?@a?as?a'
end)

if?@type='V'
set?@sql1='ALTER?VIEW?'+@objectname+'?WITH?ENCRYPTION?AS?SELECT?1?as?f'

set?@q=len(@sql1)
set?@sql1=@sql1+REPLICATE('-',4000-@q)
select?@sql2=REPLICATE('-',8000)
set?@sql3='exec(@sql1'
select?@colid=max(colid)?from?#temp?where?number=@k?
set?@n=1
while?@n<=CEILING(1.0*(@colid-1)/2)?and?len(@sql3)<=3996
begin?
set?@sql3=@sql3+'+@'
set?@n=@n+1
end
set?@sql3=@sql3+')'
exec?sp_executesql?@sql3,N'@sql1?nvarchar(4000),@?varchar(8000)',@sql1=@sql1,@=@sql2

end
set?@k=@k+1
end

set?@k=0
while?@k<=@number?
begin

if?exists(select?1?from?syscomments?where?id=object_id(@objectname)?and?number=@k)
begin
select?@colid=max(colid)?from?#temp?where?number=@k?
set?@n=1

while?@n<=@colid
begin
select?@OrigSpText1=ctext,@encrypted=encrypted,@status=status?FROM?#temp??WHERE?colid=@n?and?number=@k

SET?@OrigSpText3=(SELECT?ctext?FROM?syscomments?WHERE?id=object_id(@objectname)?and?colid=@n?and?number=@k)
if?@n=1
begin
if?@type='P'
SET?@OrigSpText2=(case?when?@number>1?then?'CREATE?PROCEDURE?'+?@objectname?+';'+rtrim(@k)+'?WITH?ENCRYPTION?AS?'
???????????????????????
else?'CREATE?PROCEDURE?'+?@objectname?+'?WITH?ENCRYPTION?AS?'
???????????????????????
end)


if?@type='FN'?or?@type='TF'?or?@type='IF'
SET?@OrigSpText2=(case?@type?when?'TF'?then?
'CREATE?FUNCTION?'+?@objectname+'(@a?char(1))?returns?@b?table(a?varchar(10))?with?encryption?as?begin?insert?@b?select?@a?return?end?'
when?'FN'?then
'CREATE?FUNCTION?'+?@objectname+'(@a?char(1))?returns?char(1)?with?encryption?as?begin?return?@a?end'
when?'IF'?then
'CREATE?FUNCTION?'+?@objectname+'(@a?char(1))?returns?table?with?encryption?as?return?select?@a?as?a'
end)

if?@type='TR'?
begin

if?@tr_parent_xtype='V'
begin
set?@OrigSpText2='CREATE?TRIGGER?'+@objectname+'?ON?'+OBJECT_NAME(@parentid)+'?WITH?ENCRYPTION?INSTEAD?OF?INSERT?AS?PRINT?1?'
end
else
begin
set?@OrigSpText2='CREATE?TRIGGER?'+@objectname+'?ON?'+OBJECT_NAME(@parentid)+'?WITH?ENCRYPTION?FOR?INSERT?AS?PRINT?1?'
end

end

if?@type='V'
set?@OrigSpText2='CREATE?VIEW?'+@objectname+'?WITH?ENCRYPTION?AS?SELECT?1?as?f'

set?@q=4000-len(@OrigSpText2)
set?@OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
begin
SET?@OrigSpText2=REPLICATE('-',?4000)
end
SET?@i=1

SET?@resultsp?=?replicate(N'A',?(datalength(@OrigSpText1)?/?2))

WHILE?@i<=datalength(@OrigSpText1)/2
BEGIN

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
set?@orgvarbin=cast(@OrigSpText1?as?varbinary(8000))
set?@resultsp=(case?when?@encrypted=1?
????????????????????
then?@resultsp?
????????????????????
else?convert(nvarchar(4000),case?when?@status&2=2?then?uncompress(@orgvarbin)?else?@orgvarbin?end)
???????????????
end)
print?@resultsp

set?@n=@n+1

end

end
set?@k=@k+1
end

drop?table?#temp
rollback?tran
end

轉(zhuǎn)載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/09/18/507494.html

總結(jié)

以上是生活随笔為你收集整理的查看SQL SERVER 加密存储过程,函数,触发器,视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。