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/中描述的步骤进行操作
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |