【问题标题】:SQL Server stored procedure cacheSQL Server 存储过程缓存
【发布时间】: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 代码所建议的那样

标签: sql-server stored-procedures user-defined-functions openquery


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2010-11-23
    相关资源
    最近更新 更多