Asp.net SQL缓存依存关系不适用于存储过程

Asp.net SQL缓存依存关系不适用于存储过程,asp.net,sql,sql-server,sqlcachedependency,Asp.net,Sql,Sql Server,Sqlcachedependency,我无法使SqlCacheDependency与简单的存储过程(SQL Server 2008)一起工作: 下面是我的ASP.NET代码(3.5框架): 有人有幸将此应用于SPs吗? 谢谢 您不是每次都从缓存返回数据。应该是这样的: if (Cache["Albums"]!=null) { return (DataTable) Cache["Albums"]; } else { // you need to write coding from database. } 我发现了这一点,需

我无法使SqlCacheDependency与简单的存储过程(SQL Server 2008)一起工作:

下面是我的ASP.NET代码(3.5框架):

有人有幸将此应用于SPs吗?
谢谢

您不是每次都从缓存返回数据。应该是这样的:

if (Cache["Albums"]!=null)
{
   return (DataTable) Cache["Albums"];
}
else
{
  // you need to write coding from database.
}

我发现了这一点,需要在创建SP之前设置查询选项。在创建SP时,它正常工作,如下所示:

USE [MyDatabase]
GO

set ANSI_NULLS ON
set ANSI_PADDING ON
set ANSI_WARNINGS ON
set CONCAT_NULL_YIELDS_NULL ON
set QUOTED_IDENTIFIER ON
set NUMERIC_ROUNDABORT OFF
set ARITHABORT ON
go


create proc [dbo].[spGetPeteTest]
as

select Id, Artist, Album
from dbo.PeteTest

GO

对我来说,在存储过程中使用类似的东西不起作用

select id, name from dbo.tblTable;
我必须明确地输入这样的引用

select dbo.tblTable.id, dbo.tblTable.name from dbo.tblTable;

如果使用
select*
,SQL缓存将不起作用,还需要确保将
dbo
(或相关架构)放在表名前面。
您还可以检查SQL事件探查器,以验证您的
SQL
是否已运行希望将帮助您等等……

另一个原因可能是SQL语句中的以下内容:

AND dbo.[PublishDate] <= GetDate()

和dbo。[PublishDate]注意,您不能使用

与(诺洛克)

在存储过程或存储过程中,依赖关系将始终保持无效。 据我所知,文档中似乎没有提到这一点


我意识到原来的海报并没有这样做,但来到这里的任何人都可能有标题中所述的问题,因此我认为这是值得一提的。

是的,我的电话如下:DataTable dtAlbums=(DataTable)Cache.Get(“Albums”);如果(dtAlbums==null){dtAlbums=GetAlbums();}GridView1.DataSource=dtAlbums.DefaultView;GridView1.DataBind();如果我使用select命令,例如select id、artist、ALBOM from TEST,则GetAlbums()方法可以工作。但是,当相同的select语句包装在SP中时,缓存将不起作用。
select dbo.tblTable.id, dbo.tblTable.name from dbo.tblTable;
AND dbo.[PublishDate] <= GetDate()