SqlCacheDependency不起作用

ukr*_*ine 3 asp.net sql-server-2008

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

ALTER DATABASE ForTest SET ENABLE_BROKER 
Run Code Online (Sandbox Code Playgroud)

在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"];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

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

SqlDependency.Start(
    WebConfigurationManager.ConnectionStrings["ForTest"].ConnectionString
);
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 7

我有类似的问题.本文:SQL Server 2008和SQL Server 2005中的SqlCacheDependency故障排除帮助了我很多.

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

ALTER AUTHORIZATION ON DATABASE::[my_perfect_database_name] TO [sa];
Run Code Online (Sandbox Code Playgroud)

它现在就像一个魅力.

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

在目标队列中排队消息时发生异常.错误:15517,状态:1.无法作为数据库主体执行,因为主体"dbo"不存在,此类主体不能被模拟,或者您没有权限.

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