.net 对Sql进行逻辑读取的单元测试
我们对数据访问层进行了单元测试。这有助于发现sql语法错误。.net 对Sql进行逻辑读取的单元测试,.net,sql,unit-testing,logical-reads,.net,Sql,Unit Testing,Logical Reads,我们对数据访问层进行了单元测试。这有助于发现sql语法错误。 现在我们有了这些测试,我想再进一步。我希望运行单元测试并自动查找具有大量逻辑读取的sql。(查找需要调优的sql) 将“设置统计IO”添加到sql并不困难。我要寻找的是一个存储过程,我将其发送到db,它返回一个字符串,其中包含有关sql的逻辑读取信息。我在Sybase工作,但如果您知道Storage proc/etc在另一个数据库中执行此操作,那将仍然是一个巨大的帮助 谢谢 这在TSQL过程中是不可能的,但是可以通过订阅SqlConn
现在我们有了这些测试,我想再进一步。我希望运行单元测试并自动查找具有大量逻辑读取的sql。(查找需要调优的sql) 将“设置统计IO”添加到sql并不困难。我要寻找的是一个存储过程,我将其发送到db,它返回一个字符串,其中包含有关sql的逻辑读取信息。我在Sybase工作,但如果您知道Storage proc/etc在另一个数据库中执行此操作,那将仍然是一个巨大的帮助
谢谢 这在TSQL过程中是不可能的,但是可以通过订阅SqlConnection对象上的
InfoMessage
事件在.net中捕获输出
...
using (var connection = new SqlConnection("connectionstring")
using (var command = new SqlCommand("SET STATISTICS IO ON"))
{
connection.Open();
connection.InfoMessage += OnInfoMessage;
using (var reader = command.ExecuteReader())
{
....
}
}
...
private static void OnInfoMessage(object sender, SqlInfoMessageEventArgs args)
{
foreach (SqlError err in args.Errors)
{
Console.WriteLine(err.Message);
}
}
这在TSQL过程中是不可能的,但是可以通过订阅SqlConnection对象上的
InfoMessage
事件在.net中捕获输出
...
using (var connection = new SqlConnection("connectionstring")
using (var command = new SqlCommand("SET STATISTICS IO ON"))
{
connection.Open();
connection.InfoMessage += OnInfoMessage;
using (var reader = command.ExecuteReader())
{
....
}
}
...
private static void OnInfoMessage(object sender, SqlInfoMessageEventArgs args)
{
foreach (SqlError err in args.Errors)
{
Console.WriteLine(err.Message);
}
}