仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1141|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之解密SQL2000的存储历程

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。存储历程|解密
内容来自互联网,作者不明
dropproceduresp_decrypt
go
createPROCEDUREsp_decrypt(@objectNamevarchar(50))
AS
begin

begintransaction--addbyplayyuer

declare@objectname1varchar(100)
declare@sql1nvarchar(4000),@sql2nvarchar(4000),@sql3nvarchar(4000),@sql4nvarchar(4000),@sql5nvarchar(4000),@sql6nvarchar(4000),@sql7nvarchar(4000),@sql8nvarchar(4000),@sql9nvarchar(4000),@sql10nvarchar(4000)
DECLARE@OrigSpText1nvarchar(4000),@OrigSpText2nvarchar(4000),@OrigSpText3nvarchar(4000),@resultspnvarchar(4000)
declare@iint,@tbigint
declare@mint,@nint,@qint
set@m=(SELECTmax(colid)FROMsyscommentsWHEREid=object_id(@objectName))
set@n=1
--getencrypteddata
createtable#temp(colidint,ctextvarbinary(8000))
insert#tempSELECTcolid,ctextFROMsyscommentsWHEREid=object_id(@objectName)
set@sql1=ALTERPROCEDURE+@objectName+WITHENCRYPTIONAS
--set@sql1=ALTERPROCEDURE+@objectName+WITHENCRYPTIONAS
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=(SELECTctextFROM#tempWHEREcolid=@n)
set@objectname1=@objectName+_t
SET@OrigSpText3=(SELECTctextFROMsyscommentsWHEREid=object_id(@objectName)andcolid=@n)
if@n=1
begin
SET@OrigSpText2=CREATEPROCEDURE+@objectName+WITHENCRYPTIONAS--
set@q=4000-len(@OrigSpText2)
set@OrigSpText2=@OrigSpText2+REPLICATE(-,@q)
end
else
begin
SET@OrigSpText2=REPLICATE(-,4000)
end
--startcounter
SET@i=1
--filltemporaryvariable
SET@resultsp=replicate(NA,(datalength(@OrigSpText1)/2))

--loop
WHILE@i<=datalength(@OrigSpText1)/2
BEGIN
--reverseencryption(XORoriginal+bogus+bogusencrypted)
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
--droporiginalSP
--EXECUTE(dropPROCEDURE+@objectName)
--removeencryption
--preservecase
SET@resultsp=REPLACE((@resultsp),WITHENCRYPTION,)
SET@resultsp=REPLACE((@resultsp),WithEncryption,)
SET@resultsp=REPLACE((@resultsp),withencryption,)
IFCHARINDEX(WITHENCRYPTION,UPPER(@resultsp))>0
SET@resultsp=REPLACE(UPPER(@resultsp),WITHENCRYPTION,)
--replaceStoredprocedurewithoutenryption
print@resultsp
--execute(@resultsp)
set@n=@n+1
end
droptable#temp
end
rollbacktransaction--addbyplayyuer
GO

在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-19 21:07:35 来自手机 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
山那边是海 该用户已被删除
板凳
发表于 2015-1-28 10:36:40 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
只想知道 该用户已被删除
地板
发表于 2015-2-5 18:31:59 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-13 03:52:47 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
简单生活 该用户已被删除
6#
发表于 2015-3-3 13:22:48 | 只看该作者
总感觉自己还是不会SQL
admin 该用户已被删除
7#
发表于 2015-3-11 11:05:39 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-18 07:59:38 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
海妖 该用户已被删除
9#
发表于 2015-3-25 13:51:22 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 06:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表