Asp.net SQL缓存依存关系不适用于存储过程
我无法使SqlCacheDependency与简单的存储过程(SQL Server 2008)一起工作: 下面是我的ASP.NET代码(3.5框架): 有人有幸将此应用于SPs吗?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. } 我发现了这一点,需
谢谢 您不是每次都从缓存返回数据。应该是这样的:
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()