c# 获取sqlserver 运行脚本的print消息的方法分享
转自:http://www.maomao365.com/?p=6923
摘要:
在sql脚本的编写中,我们经常使用sql脚本print消息,作为输出测试,
通过获取print消息,我们可以快速获取程序中的错误信息,下文讲述通过 SqlInfoMessageEventHandler 获取print信息,如下所示:
实验环境:sqlserver 2008 R2
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { webCrm.SAG tmp = new webCrm.SAG(); protected void Page_Load(object sender, EventArgs e) { /*获取 sql print的消息信息*/ string connectionString = "data source=***********;initial catalog=boss;user id=sa;password=erp;"; using (SqlConnection sqlcon = new SqlConnection(connectionString)) { sqlcon.Open(); sqlcon.InfoMessage += new SqlInfoMessageEventHandler(OnReceivingInfoMessage); /* 查询某个表上的索引碎片的详细信息 */ SqlCommand cmd = new SqlCommand("print '输出消息1'; set statistics io on ;select * from [ierror] ; print '输出sql消息完毕'", sqlcon); cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); } Console.Read(); } private void OnReceivingInfoMessage(object sender, SqlInfoMessageEventArgs e) { Response.Write("输出sql消息:" + e.Message.ToString()); } } }
----------------------输出-------------------------------------------------------------------------
输出sql消息:输出消息1
表 'IError'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
输出sql消息完毕