以编程方式读取 SQL 服务器的触发器查询计划
Programatically read SQL Server's trigger query plan
我需要从 C# 读取与 SQL 命令相关的所有查询计划。但是,触发器的查询计划不会在 reader 中返回。我正在使用这样的简单代码:
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SET SHOWPLAN_XML ON";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
// next method
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.CommandType = CommandType.Text;
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
AnalyzeQueryPlan(reader[0].ToString());
}
reader.Close();
但我缺少触发器的查询计划。如果我在 SSMS 中处理相同的查询,我可以看到所有这些查询。有没有办法在 C# 中读取触发器的查询计划?
我无法对此进行测试,但假设您只需要使用 reader.NextResult()
前进到下一个结果,然后对其进行处理。
我需要从 C# 读取与 SQL 命令相关的所有查询计划。但是,触发器的查询计划不会在 reader 中返回。我正在使用这样的简单代码:
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SET SHOWPLAN_XML ON";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
// next method
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.CommandType = CommandType.Text;
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
AnalyzeQueryPlan(reader[0].ToString());
}
reader.Close();
但我缺少触发器的查询计划。如果我在 SSMS 中处理相同的查询,我可以看到所有这些查询。有没有办法在 C# 中读取触发器的查询计划?
我无法对此进行测试,但假设您只需要使用 reader.NextResult()
前进到下一个结果,然后对其进行处理。