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

c# – SqlDependency简单选择查询总是返回“无效”

发布时间:2020-12-16 00:20:00 所属栏目:百科 来源:网络整理
导读:我正在尝试让SqlDependency对象给我通知,但到目前为止我无法让它工作. 我发送的SQL查询是这样的: SELECT [SocialMedia].[dbo].[Items].[Id] FROM [SocialMedia].[dbo].[Items] 我已经尝试了w /和没有大括号,具有完全限定名称,只有变量名称,以及中间的所有内
我正在尝试让SqlDependency对象给我通知,但到目前为止我无法让它工作.

我发送的SQL查询是这样的:

SELECT [SocialMedia].[dbo].[Items].[Id]
  FROM [SocialMedia].[dbo].[Items]

我已经尝试了w /和没有大括号,具有完全限定名称,只有变量名称,以及中间的所有内容.

Id是Guid类型,我没有看到它们在Creating a Query for Notification文章中没有使用SqlDependency对象

我也试过发送多个列来查看是否可行.

SELECT SocialMedia.dbo.Items.Id,SocialMedia.dbo.Items.DateTimeCreated,SocialMedia.dbo.Items.AuthorId
  FROM   SocialMedia.dbo.Items

这也没有用.

这是我的表SQL:

USE [SocialMedia]

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
SET ANSI_PADDING ON

CREATE TABLE [dbo].[Items](
    [Id] [uniqueidentifier] NOT NULL,[DateTimeCreated] [datetimeoffset](7) NOT NULL,[AuthorId] [uniqueidentifier] NOT NULL,[Source] [varchar](max) NOT NULL,[PlaceId] [uniqueidentifier] NULL,[FullText] [varchar](max) NOT NULL,[Geography] [geography] NULL,[DateTimeAdded] [datetime] NULL,CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ( [Id] ASC ) 
                 WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [dbo].[Items]  WITH CHECK ADD  CONSTRAINT [FK_Items_Places] 
FOREIGN KEY([PlaceId]) REFERENCES [dbo].[Places] ([Id])

ALTER TABLE [dbo].[Items] CHECK CONSTRAINT [FK_Items_Places]

GO
ALTER TABLE [dbo].[Items]  WITH CHECK ADD  CONSTRAINT [FK_Items_Users] 
FOREIGN KEY([AuthorId]) REFERENCES [dbo].[Users] ([Id])

ALTER TABLE [dbo].[Items] CHECK CONSTRAINT [FK_Items_Users]

我的DB:

USE [master]
GO

CREATE DATABASE [SocialMedia]
 CONTAINMENT = NONE
 ON  PRIMARY 
 ( NAME = N'SocialMedia',FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL11.DENALIMSSQLDATASocialMedia.mdf',SIZE = 1110016KB,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'SocialMedia_log',FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL11.DENALIMSSQLDATASocialMedia_log.ldf',SIZE = 123648KB,MAXSIZE = 2048GB,FILEGROWTH = 10%)
GO

ALTER DATABASE [SocialMedia] SET COMPATIBILITY_LEVEL = 110
GO

IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) BEGIN
  EXEC [SocialMedia].[dbo].[sp_fulltext_database] @action = 'enable'
END
GO

ALTER DATABASE [SocialMedia] SET ANSI_NULL_DEFAULT OFF 
ALTER DATABASE [SocialMedia] SET ANSI_NULLS ON 
ALTER DATABASE [SocialMedia] SET ANSI_PADDING ON 
ALTER DATABASE [SocialMedia] SET ANSI_WARNINGS ON 
ALTER DATABASE [SocialMedia] SET ARITHABORT ON 
ALTER DATABASE [SocialMedia] SET AUTO_CLOSE OFF 
ALTER DATABASE [SocialMedia] SET AUTO_CREATE_STATISTICS ON 
ALTER DATABASE [SocialMedia] SET AUTO_SHRINK OFF 
ALTER DATABASE [SocialMedia] SET AUTO_UPDATE_STATISTICS ON 
ALTER DATABASE [SocialMedia] SET CURSOR_CLOSE_ON_COMMIT OFF 
ALTER DATABASE [SocialMedia] SET CURSOR_DEFAULT  GLOBAL 
ALTER DATABASE [SocialMedia] SET CONCAT_NULL_YIELDS_NULL ON 
ALTER DATABASE [SocialMedia] SET NUMERIC_ROUNDABORT OFF 
ALTER DATABASE [SocialMedia] SET QUOTED_IDENTIFIER ON 
ALTER DATABASE [SocialMedia] SET RECURSIVE_TRIGGERS OFF 
ALTER DATABASE [SocialMedia] SET  ENABLE_BROKER 
ALTER DATABASE [SocialMedia] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
ALTER DATABASE [SocialMedia] SET DATE_CORRELATION_OPTIMIZATION OFF 
ALTER DATABASE [SocialMedia] SET TRUSTWORTHY OFF 
ALTER DATABASE [SocialMedia] SET ALLOW_SNAPSHOT_ISOLATION OFF 
ALTER DATABASE [SocialMedia] SET PARAMETERIZATION SIMPLE 
ALTER DATABASE [SocialMedia] SET READ_COMMITTED_SNAPSHOT OFF 
ALTER DATABASE [SocialMedia] SET HONOR_BROKER_PRIORITY OFF 
ALTER DATABASE [SocialMedia] SET RECOVERY FULL 
ALTER DATABASE [SocialMedia] SET  MULTI_USER 
ALTER DATABASE [SocialMedia] SET PAGE_VERIFY CHECKSUM  
ALTER DATABASE [SocialMedia] SET DB_CHAINING OFF 
ALTER DATABASE [SocialMedia] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
ALTER DATABASE [SocialMedia] SET TARGET_RECOVERY_TIME = 0 SECONDS 
ALTER DATABASE [SocialMedia] SET  READ_WRITE

我用来运行它的代码:

string connString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
conn = new SqlConnection(connString);
conn.Open(); // open new connection and create command to notify about all new Chat-Messages in -ROOM_NUMBER- const
using (var sqlCommand = new SqlCommand(GetSearchQueryString(searchItems),conn))
{
    var sqlDependency = new SqlDependency(sqlCommand
    //handle onChange event - this will be fired whenever there is a change in database that affacts our query
    sqlDependency.OnChange += (sender,e) =>
    {
        //change detected - get all messages...
        try
        {

            var sql = GetSearchQueryString(searchItems);
            int count = _entities.ExecuteStoreQuery<Guid>(sql).Count();

            AsyncManager.Parameters["count"] = count;
        }
        finally
        {
            AsyncManager.OutstandingOperations.Decrement();
        }
    };
    sqlCommand.ExecuteNonQuery();
}

我正在调用SqlDependency.Start(ConfigurationManager.ConnectionStrings [“ApplicationServices”].ConnectionString);在该计划的早期.

我错过了什么吗?我觉得我错过了一些明显的东西……

解决方法

我们按照 http://dimarzionist.wordpress.com/2009/04/01/how-to-make-sql-server-notifications-work/中描述的步骤进行操作

(编辑:李大同)

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

    推荐文章
      热点阅读