Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlDependency不';除非是第一次,否则别开枪_C#_Sqldependency - Fatal编程技术网

C# SqlDependency不';除非是第一次,否则别开枪

C# SqlDependency不';除非是第一次,否则别开枪,c#,sqldependency,C#,Sqldependency,我正在设置一个依赖项,然后每分钟检查一次该依赖项是否仍然存在,以及HasChanges是否为true 我每分钟都在这样做,因为我很难获得一致的更改通知 当数据库第一次发生更改时,通知就可以正常工作,但即使我重置了依赖项,它也不会再次被触发 注意:我有两台服务器,每台服务器上运行的代码几乎相同。在SQL DB所在的机器上,我没有遇到任何问题。但是在第二台机器上,SQL连接到第一台机器的DB——我只收到一次通知,即使我重置了依赖项 即使我调试并观察HasDependency函数中的变量“depend

我正在设置一个依赖项,然后每分钟检查一次该依赖项是否仍然存在,以及HasChanges是否为true

我每分钟都在这样做,因为我很难获得一致的更改通知

当数据库第一次发生更改时,通知就可以正常工作,但即使我重置了依赖项,它也不会再次被触发

注意:我有两台服务器,每台服务器上运行的代码几乎相同。在SQL DB所在的机器上,我没有遇到任何问题。但是在第二台机器上,SQL连接到第一台机器的DB——我只收到一次通知,即使我重置了依赖项

即使我调试并观察HasDependency函数中的变量“dependency”u,我也会看到HasChanges=false,即使我故意更改了表

两台服务器的SqlDependency查询完全相同

有没有人有过类似的问题

EDIT1:我在SQL Server日志中发现此错误:

会话句柄上的查询通知对话框 “{11D06BD6-9CDD-E611-A46F-141877596DFF}。”由于以下原因关闭 错误:'-8490 找不到远程服务'SqlQueryNotificationService-49a0b301-7c6f-439b-bac5-50ec9dfe6922' 因为它不存在

代码:

也许这篇文章是有用的-可能是重复的也许这篇文章是有用的-可能是重复的
   public void WakeUpEveryMinute()
            {
                if (Master.G.OUTPUT) Master.G.OUTMGR.WriteLine("[calcSignal] Checking dependency");
            if (!sqlOMS2.HasDependency())
            {
                if (Master.G.OUTPUT) Master.G.OUTMGR.WriteLine("[calcSignal] Setting dependency");

                sqlOMS2.InitialiseDependency(calcSignalForDepedency);
            }
            return;
        }

    public void InitialiseDependencyWORK(Action onDependencyMethod)
    {
        this.onDependencyMethod = onDependencyMethod;
        SqlDependency.Start(connectionString, null);

        using (SqlCommand command = new SqlCommand("SELECT [Symbol] FROM [" + AccountCode + "].[Orders] WHERE [Status] = 'NEW'",conn))
        {
            Dependency = new SqlDependency(command);
            Dependency.OnChange += new OnChangeEventHandler(OnDependencyChange);
            using (SqlDataReader reader = command.ExecuteReader())
            {
                // Process the DataReader.
            }
        }
    }

    void OnDependencyChange(object sender,   SqlNotificationEventArgs e)
    {
        Console.WriteLine("[OnDependencyChange] " + DateTime.UtcNow.ToString("HH:mm:ss.fff"));
        onDependencyMethod();

    }

    public bool HasDependency()
    {

        if (Dependency == null || Dependency.HasChanges)
            return false;

        return true;
    }