asp.net SqlCacheDependency配置不当,缓存依赖失效怎么办?

2026-03-30 12:441阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计514个文字,预计阅读时间需要3分钟。

asp.net SqlCacheDependency配置不当,缓存依赖失效怎么办?

我想将SqlCacheDependency添加到我的应用程序中。因此,我决定创建一个小型tesp项目并面临困难。我使用MSSQL 2008。我使用表结构创建了一个新的数据库,并添加了几行数据。我执行了以下命令:ALTER DATABASE ForTest SET ENABLE_...

我想将SqlCacheDependency添加到我的应用程序.
因此,我决定创建小型tesp项目并面临困难.
我使用MSSQL 2008.我使用表格行创建新的数据库并添加了几行.
我执行了:

asp.net SqlCacheDependency配置不当,缓存依赖失效怎么办?

ALTER DATABASE ForTest SET ENABLE_BROKER

在managmeng工作室.

Aspx页面:

public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Cache["Lines"] == null) { string connectionString = WebConfigurationManager.ConnectionStrings["ForTest"].ConnectionString; SqlConnection con = new SqlConnection(connectionString); string query = "SELECT dbo.Lines.Id, dbo.Lines.Value FROM dbo.Lines"; SqlCommand cmd = new SqlCommand(query, con); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds, "Lines"); SqlCacheDependency empDependency = new SqlCacheDependency(cmd); Cache.Insert("Lines", ds, empDependency); } } } protected void btnResult_OnClick(object sender, EventArgs e) { var result = Cache["Lines"]; } }

我运行此页面并向Cache添加行,然后在管理工作室中添加行,当我点击按钮时,我期待
缓存将被更改但缓存仍然是旧的.
我找不到我做错了什么:(你能给我一些提示,我怎么能解决这个问题?

谢谢

更新:
我伪造说在global.aspx我运行:

SqlDependency.Start( WebConfigurationManager.ConnectionStrings["ForTest"].ConnectionString ); 我有一个类似的问题.这篇文章: Troubleshooting SqlCacheDependency in SQL Server 2008 and SQL Server 2005对我帮助很大.

简而言之:数据库已从备份中恢复,并且创建数据库的原始Windows用户不再可用.所以我将数据库所有权更改为有效登录,类似于:

ALTER AUTHORIZATION ON DATABASE::[my_perfect_database_name] TO [sa];

它现在就像一个魅力.

我是如何找到问题的根源的?我运行查询SELECT * FROM sys.transmission_queue并找到transmission_status列中的下一个数据:

An exception occurred while enqueueing a message in the target queue.
Error: 15517, State: 1. Cannot execute as the database principal
because the principal “dbo” does not exist, this type of principal
cannot be impersonated, or you do not have permission.

这条消息给了我解决问题的关键.

本文共计514个文字,预计阅读时间需要3分钟。

asp.net SqlCacheDependency配置不当,缓存依赖失效怎么办?

我想将SqlCacheDependency添加到我的应用程序中。因此,我决定创建一个小型tesp项目并面临困难。我使用MSSQL 2008。我使用表结构创建了一个新的数据库,并添加了几行数据。我执行了以下命令:ALTER DATABASE ForTest SET ENABLE_...

我想将SqlCacheDependency添加到我的应用程序.
因此,我决定创建小型tesp项目并面临困难.
我使用MSSQL 2008.我使用表格行创建新的数据库并添加了几行.
我执行了:

asp.net SqlCacheDependency配置不当,缓存依赖失效怎么办?

ALTER DATABASE ForTest SET ENABLE_BROKER

在managmeng工作室.

Aspx页面:

public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Cache["Lines"] == null) { string connectionString = WebConfigurationManager.ConnectionStrings["ForTest"].ConnectionString; SqlConnection con = new SqlConnection(connectionString); string query = "SELECT dbo.Lines.Id, dbo.Lines.Value FROM dbo.Lines"; SqlCommand cmd = new SqlCommand(query, con); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds, "Lines"); SqlCacheDependency empDependency = new SqlCacheDependency(cmd); Cache.Insert("Lines", ds, empDependency); } } } protected void btnResult_OnClick(object sender, EventArgs e) { var result = Cache["Lines"]; } }

我运行此页面并向Cache添加行,然后在管理工作室中添加行,当我点击按钮时,我期待
缓存将被更改但缓存仍然是旧的.
我找不到我做错了什么:(你能给我一些提示,我怎么能解决这个问题?

谢谢

更新:
我伪造说在global.aspx我运行:

SqlDependency.Start( WebConfigurationManager.ConnectionStrings["ForTest"].ConnectionString ); 我有一个类似的问题.这篇文章: Troubleshooting SqlCacheDependency in SQL Server 2008 and SQL Server 2005对我帮助很大.

简而言之:数据库已从备份中恢复,并且创建数据库的原始Windows用户不再可用.所以我将数据库所有权更改为有效登录,类似于:

ALTER AUTHORIZATION ON DATABASE::[my_perfect_database_name] TO [sa];

它现在就像一个魅力.

我是如何找到问题的根源的?我运行查询SELECT * FROM sys.transmission_queue并找到transmission_status列中的下一个数据:

An exception occurred while enqueueing a message in the target queue.
Error: 15517, State: 1. Cannot execute as the database principal
because the principal “dbo” does not exist, this type of principal
cannot be impersonated, or you do not have permission.

这条消息给了我解决问题的关键.