SQL Server 存储过程缓存

Posted

技术标签:

【中文标题】SQL Server 存储过程缓存【英文标题】:SQL Server stored procedure cache 【发布时间】:2012-05-30 13:40:01 【问题描述】:

我正在尝试通过两种不同的方法执行相同的选择。

首先通过表值函数使用存储过程

SELECT * FROM dbo.DF_PRODUCTS();

第二次通过openquery,通过执行存储过程

SELECT * 
FROM openquery([servername], 
               'SET FMTONLY OFF exec DatabaseName.dbo.My_StoredProcedure')

问题是我得到了各种结果,我认为问题出在存储过程缓存中。谁能帮我解决这个问题?

【问题讨论】:

您可以发布您存储的过程代码吗? 如果您关心的是 sp 缓存,那么您继续使用 DBCC FREEPROCCACHE 将其删除,或者由于 sql server 缓存是暂时关闭您的 ssms n 然后重新打开它。否则,如@Limey 发布您的 SP 代码所建议的那样 【参考方案1】:

如果您通过运行完全相同的代码得到不同的结果,并且“唯一”(感知的)差异是您通过 OPENQUERY 命令运行一个,请进行健全性检查并确认 OPENQUERY([servername] ...) 肯定是在与您的第一个查询相同的服务器上运行。

最可能的情况是您的链接服务器与您在本地运行的服务器不同 - 例如。您针对的是本地数据库而不是开发/测试/登台/实时数据库。

【讨论】:

以上是关于SQL Server 存储过程缓存的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 存储过程

SQL Server 存储过程

SQL Server 存储过程

SQL Server 存储过程

SQL Server 存储过程

SQL Server 存储过程