我有一个运行SQL Server数据库的ASP.NET站点,其中包含以下每晚维护计划:
每隔一段时间我就会醒来,发现以下错误(以及不满意的用户!)
导致将varchar数据类型转换为日期时间数据类型 在超出范围的价值。
我已经发现这是因为其中一个SP缓存计划已经偏斜,即其中一个签名不再正确(它试图将varchar参数强制进入日期时间)。我正在使用LINQ 2 SQL(不能改变它!),这导致各种奇怪和精彩的sp_executesql调用。我知道修复它的唯一方法是在事后执行以下SQL:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
我有什么想法可以做些什么来阻止这个问题的发生?