【发布时间】:2022-08-21 21:08:57
【问题描述】:
有没有办法在通过 System.Data.SqlClient 执行存储过程时在 C# 中添加OPTION (RECOMPILE)?
我在想象中寻找的是
using (SqlConnection sqlConn = new SqlConnection(CONN_STR))
{
sqlConn.Open();
using (SqlCommand cmd = new SqlCommand(\"usp_xyz OPTION (RECOMPILE)\", sqlConn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(\"x\", x);
cmd.ExecuteNonQuery();
}
}
-
重新编译需要在服务器端指定,而不是客户端(因此服务器知道它不能只是重用执行计划)。
-
SQL 存储过程未编译。存储过程在执行时被解析。
-
@jdweng 那不完全正确。如果存在绑定错误,它们会被解析,但直到运行时才完全绑定。实际的查询计划编译也确实发生在运行时(假设它没有被缓存),但来自解析树,而不是来自裸 SQL 文本。
标签: c# sql-server tsql stored-procedures recompile