标签: query-notifications

我希望我的数据库(SQL)通知或推送客户端应用程序的更新

我开发这个应用程序VB.net 2010SQL 2008.
我希望通知客户端有关db的更新,以及用于使用计时器检查db在指定分钟内的更改的应用程序,这实际上效率不高.我读到query notification,sqldependency,service broker,但后来我读到的东西,说他们可能不是有效的,如果我有100个客户,我使用查询通知推送通知我的申请.
有人会帮我解决我应该做的事情,以及如何做到这一点(如果可以提供示例,将会非常有用).提前致谢!

sql-server service-broker push-notification sqldependency query-notifications

21
推荐指数
1
解决办法
3万
查看次数

问题设置SUBSCRIBE QUERY NOTIFICATIONS

我目前正在为我们的网站实施缓存机制.我想使用SQL Cache依赖功能.我在管理工作室运行以下命令,但它无法正常工作.

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "my_server_name\ASPNET"
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Cannot find the user 'my_server_name\ASPNET', because it does not exist or you do not have permission.
Run Code Online (Sandbox Code Playgroud)

我尝试使用特定数据库的管理员登录我正在为机器管理员设置通知,sa和windows身份验证.还尝试以管理员身份运行管理工作室,但仍然不高兴.有人可以指出我正确的方向.谢谢!

asp.net sql-server-2008 query-notifications

13
推荐指数
1
解决办法
7705
查看次数

SqlDependency.OnChange触发但SqlDataReader没有返回数据

当我使用datetime列过滤器执行查询时

WHERE [Order].CreatedOn >= @CreatedOn
Run Code Online (Sandbox Code Playgroud)

使用a SqlDependency,对数据源的更改将触发SqlDependency.OnChange事件,但SqlDataReader与之关联的SqlCommand不会返回数据(reader.HasRows始终返回false).

当我只是将我的SQL语句中的过滤条件更改为

WHERE [Order].StatusId = 1"
Run Code Online (Sandbox Code Playgroud)

它只是工作正常和SqlDataReader返回数据(reader.HasRows返回true)

码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SignalRServer
{
    public partial class DepartmentScreen : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var u = System.Security.Principal.WindowsIdentity.GetCurrent().User;
            var UserName = u.Translate(Type.GetType("System.Security.Principal.NTAccount")).Value;

            CheckForNewOrders(DateTime.Now);
        }

        private void CheckForNewOrders(DateTime dt) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net sqldependency query-notifications signalr

9
推荐指数
1
解决办法
1181
查看次数

是否有 SQL Server 查询通知的可扩展替代方案用于从 SQL Server 引发应用程序中的事件?

SQL Server Query Notifications 是一个很棒的工具,但它似乎没有很好地扩展。每个想要/需要通知的应用程序都必须在它需要通知的持续时间内(通常是应用程序运行的整个时间)保持与数据库的开放连接。

我对创造性的解决方案持开放态度。在我的脑海里,我只是想在服务器上放置一项服务,该服务将订阅 SQL Server 查询通知,然后可以通知客户端应用程序。在这种情况下,您只打开了 1 个数据库连接(为什么不一直打开它),然后您的客户端应用程序可以订阅该服务以获取通知。

想法??

.net sql-server raiserror query-notifications

5
推荐指数
1
解决办法
1124
查看次数

在非常慢的查询中,如何指示进度百分比

我正在使用ZEOS组件连接到(古老的)MDB数据库.
我正在进行查询,读取大量数据以桥接到不同的数据库.

有没有办法以百分比表示进度?

procedure TForm13.ActionReadInMemoryExecute(Sender: TObject);
var
  QueryLine: string;
  FullQuery: string;
  Tablename: string;
  i: integer;
begin
  i:= 0;
  TableMeter.DisableControls;
  try
    TableMeter.First;
    FullQuery:= '';
    while not TableMeter.eof do begin
      Tablename:= TableMeter.FieldByName('tabelnaam').AsString;
      QueryLine:= ReplaceStr(ImportQuerySjabloon, cTabelname, Tablename);
      FullQuery:= FullQuery + QueryLine;
      if (TableMeter.RecNo < (TableMeter.RecordCount -1)) then begin
        FullQuery:= FullQuery + ' UNION ALL ';
      end;
      TableMeter.Next;
    end; {while}
    QueryImportMeterreadings.Close;
    QueryImportMeterreadings.SQL.Text:= FullQuery;
    QueryImportMeterreadings.Open;  <<-- takes a long time
  finally
    TableMeter.EnableControls;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

有没有办法表明查询的进度,或者只有在我拆分各个查询并消除查询时才能这样做UNION.
运行大约需要1分钟,涉及8个工会.

我没有看到任何可以用于此目的的事件:

或者我应该在查询中的字段上伪造一个OnCalcField来执行此操作(不确定原则上是否会起作用).
或者附上一个序列?nope,在Access DB上提供不受支持的操作

delphi delphi-2007 query-notifications

5
推荐指数
1
解决办法
735
查看次数

监视SQL Azure中的数据更改

有没有办法在SQL Azure数据更改或插入新数据时收到通知?我想向ASP.NET Web应用程序发送通知并将通知推送到Windows Phone.我知道SqlDependency类和Query通知用于监视SQL Server 2008数据库数据更改,但SQL Azure尚不支持这一点.

asp.net sqldependency windows-phone query-notifications azure-sql-database

5
推荐指数
1
解决办法
1507
查看次数

如何将数据从数据库推送到应用程序?

我想将数据从数据库推送到应用程序,而不是应用程序提取数据。我已经安装了ms sql服务器和apache tomcat服务器。我在apache tomcat中有我的应用程序,在这里我建立了数据库连接。现在,我希望数据库在有数据更新时发送数据。但是我所知道的是从数据库中获取数据不是一个好主意,因为应用程序需要监视数据库以获取更新的数据将导致每5秒触发一次查询,因此效率也不高。

我谷歌它得到一些答案,他们是查询通知在这里,SQL Server代理作业自动安排任务。如果您有其他建议,请发布。

database sql-server tomcat query-notifications

5
推荐指数
1
解决办法
7915
查看次数

大约一天后,Service Broker消息开始挂断

我有一个使用Service Broker的应用程序是SQL2008。大约每天一次,数据库的性能开始受到明显的打击,并且我确定这是由于Service Broker引起的。如果我使用以下命令硬重置所有代理连接:

ALTER DATABASE [RegencyEnterprise] SET OFFLINE WITH ROLLBACK IMMEDIATE
ALTER DATABASE [RegencyEnterprise] SET ONLINE
Run Code Online (Sandbox Code Playgroud)

然后性能将恢复正常直到第二天。我还注意到,当性能很差时,运行以下查询将返回大量(当前大约为1000)处于STARTED_OUTBOUND状态的会话:

SELECT * FROM sys.conversation_endpoints
Run Code Online (Sandbox Code Playgroud)

此外,以下查询不会在其中返回任何条目:

SELECT * FROM sys.dm_qn_subscriptions
SELECT * FROM sys.transmission_queue
Run Code Online (Sandbox Code Playgroud)

在此查询返回大量项目的地方,性能似乎还不错。唯一有问题的时间是当STARTED_OUTBOUND的连接停留在此状态时。

我对SQL Server 2008实例上的Service Broker所做的唯一配置是运行以下命令:

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

浏览SQL错误日志,我也找到了1000多次:

07/11/2013 01:00:02,spid27s,Unknown,The query notification dialog on conversation handle '{6DFE46F5-25E9-E211-8DC8-00221994D6E9}.' closed due to the following error: '<?xml version="1.0"?><Error xmlns="http://schemas.microsoft.com/SQL/ServiceBroker/Error"><Code>-8490</Code><Description>Cannot find the remote service &apos;SqlQueryNotificationService-cb4e7a77-58f3-4f93-95c1-261954d3385a&apos; because it does not exist.</Description></Error>'.
Run Code Online (Sandbox Code Playgroud)

尽管我相信我可以通过在数据库中创建一个主密钥来解决此错误,但在整个日志中我也经常看到该错误十二次。

06/26/2013 14:25:01,spid116,Unknown,Service Broker needs to access the master key in …
Run Code Online (Sandbox Code Playgroud)

sql-server service-broker sqldependency query-notifications

5
推荐指数
1
解决办法
2万
查看次数

JAVA 中的 SQL Server 查询通知

我已经在网上搜索了一段时间,但到目前为止还没有运气。是否可以在 JAVA http://www.codeproject.com/Articles/144344/Query-Notification-using-SqlDependency-and-SqlCach中实现?JDBC for SQL Server 2012 是否支持它?

提前致谢!

java sql-server spring query-notifications

5
推荐指数
1
解决办法
4788
查看次数

SqlDependency/Query通知 - SQL Server重新启动

我有一个在具有SqlDependency/查询通知的服务器上运行的应用程序- 监视不同服务器上的表的更改.

它工作正常,直到我们重新启动/重新启动SQL Server.由于某些维护和修补程序重新启动SQL Server时,另一个应用程序将引发以下错误并停止.我可以肯定地说它停止了,因为一旦SQL Server启动并运行它就不会监视更改.

我必须重新启动应用程序才能重新订阅查询通知.我没有在代码中抛出任何会阻止应用程序的异常.我正在捕捉异常并发送电子邮件.

System.Data.SqlClient.SqlException(0x80131904):将请求发送到服务器时发生传输级错误.(提供者:TCP提供者,错误:0 - 远程主机强制关闭现有连接.)--->

System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.

我是SqlDependency/查询通知的新手,所以我不确定这是否是预期的行为或我做错了什么.这是我的理解(从其他帖子(SqlDependency Reliablity?)我不必重新启动作业重新订阅.

感谢您的时间和答案

c# sql-server sqldependency query-notifications

5
推荐指数
1
解决办法
680
查看次数

如何找出哪个SQLDependency触发了更改函数?

我正在与SQLDependency班级一起探索查询通知。构建一个简单的工作示例很容易,但我觉得我错过了一些东西。一旦我跨过一个简单的单表/单依赖项示例,我就想知道 如何找出哪个依赖项触发了我的回调?

我在解释时遇到了一些麻烦,所以我在下面提供了一个简单的示例。当AChange()被调用时,我无法查看依赖项内的 sql,并且我没有对关联缓存对象的引用。

那么男孩该做什么呢?

  • 选项 1 - 为我想要跟踪的每个对象创建一个不同的函数,并在回调中对缓存键(或相关信息)进行硬编码。这感觉很脏,并且消除了在不部署新代码的情况下添加新缓存项的可能性——ewww。
  • 选项 2 - 使用 DependencyId属性和并行跟踪结构

我只是错过了什么吗?这是结构上的缺陷吗SQLDependency?我已经看过 20 篇关于这个主题的不同文章,它们似乎都有相同的漏洞。建议?

代码示例

public class DependencyCache{
   public static  string       cacheName  = "Client1";
   public static  MemoryCache  memCache   = new MemoryCache(cacheName);

   public DependencyCache() {
      SqlDependency.Start(connString);
   }

   private static string GetSQL() {
      return "select  someString FROM dbo.TestTable";
   }

   public void DoTest() {
      if (memCache["TEST_KEY"] != null ) {
         Debug.WriteLine("resources found in cache");
         return;
      }
      Cache_GetData();
   }

   private void Cache_GetData() { …
Run Code Online (Sandbox Code Playgroud)

sql-server ado.net sqldependency sql-server-2008-r2 query-notifications

2
推荐指数
1
解决办法
2991
查看次数