加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – SqlCacheDependency不起作用

发布时间:2020-12-16 09:23:06 所属栏目:asp.Net 来源:网络整理
导读:我想将SqlCacheDependency添加到我的应用程序. 因此,我决定创建小型tesp项目并面临困难. 我使用MSSQL 2008.我使用表格行创建新的数据库并添加了几行. 我执行了: ALTER DATABASE ForTest SET ENABLE_BROKER 在managmeng工作室. Aspx页面: public partial cl
我想将SqlCacheDependency添加到我的应用程序.
因此,我决定创建小型tesp项目并面临困难.
我使用MSSQL 2008.我使用表格行创建新的数据库并添加了几行.
我执行了:

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.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读