- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
编辑:我修复了它。我所做的是将数据库的所有者更改为与我用来连接它的用户不同的东西。检查数据库所有者:
select name, suser_sname(owner_sid) from sys.databases
更改所有者:
ALTER AUTHORIZATION ON DATABASE::ISS TO sa;
差不多就是这样,我仍然不知道这样做的原因,但它确实有效,太棒了。 (也许以前的 dbowner 缺少一些权利?)
这让我头疼了太久,我完全不知道为什么会这样。长话短说,我从以下位置获取了 Mark Nischalke 的项目:http://www.codeproject.com/Articles/12335/Using-SqlDependency-for-data-change-events .该项目有一个 SQL 脚本来创建数据库,并且 SqlDependecy 在他的项目/数据库上触发。现在我知道我以前的数据库有问题,我复制了他的脚本并创建了我自己的数据库。除了表格(很明显)之外,一切都是相同的。这意味着我的 SqlDependency 应该可以工作,因为我有一个与另一个工作的数据库相同配置的数据库;但是不......它不起作用。此时,在我的 项目中,我更改了 SqlDependecy 以检查他的 数据库的通知并且它有效,所以这不是我项目中的 .NET 问题。然后我尝试让 他的 项目中的 SqlDependency 检查 我的 数据库,不,仍然不起作用。在这两种情况下,我都使用相同的连接字符串、集成安全性但不同的初始目录。感谢您的帮助。
(另请注意,MessageQueue 是在我的数据库上创建的,并在我关闭项目 SqlDependecy.Stop 但事件未触发时删除)
这是他的数据库创建脚本
USE [master]
GO
/****** Object: Database [Chatter] Script Date: 11/18/2005 13:55:20 ******/
CREATE DATABASE [Chatter] ON PRIMARY
( NAME = N'Chatter', FILENAME = N'D:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Chatter.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'Chatter_log', FILENAME = N'D:\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Chatter_log.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'Chatter', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [Chatter].[dbo].[sp_fulltext_database] @action = 'disable'
end
GO
ALTER DATABASE [Chatter] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [Chatter] SET ANSI_NULLS OFF
GO
ALTER DATABASE [Chatter] SET ANSI_PADDING OFF
GO
ALTER DATABASE [Chatter] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [Chatter] SET ARITHABORT OFF
GO
ALTER DATABASE [Chatter] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [Chatter] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [Chatter] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [Chatter] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [Chatter] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [Chatter] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [Chatter] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [Chatter] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [Chatter] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [Chatter] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [Chatter] SET ENABLE_BROKER
GO
ALTER DATABASE [Chatter] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [Chatter] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [Chatter] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [Chatter] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [Chatter] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [Chatter] SET READ_WRITE
GO
ALTER DATABASE [Chatter] SET RECOVERY FULL
GO
ALTER DATABASE [Chatter] SET MULTI_USER
GO
ALTER DATABASE [Chatter] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [Chatter] SET DB_CHAINING OFF
/***************************************************/
USE [Chatter]
GO
/****** Object: Table [dbo].[Message] Script Date: 11/18/2005 13:56:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Message](
[int] [bigint] IDENTITY(1,1) NOT NULL,
[Message] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Person_ID] [int] NOT NULL,
CONSTRAINT [PK_Message] PRIMARY KEY CLUSTERED
(
[int] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
USE [Chatter]
GO
/****** Object: Table [dbo].[Person] Script Date: 11/18/2005 13:56:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Person](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
USE [Chatter]
GO
/****** Object: StoredProcedure [dbo].[usp_GetMessages] Script Date: 11/18/2005 13:59:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[usp_GetMessages]
AS
SELECT [Message], [Name]
FROM dbo.[Message]
JOIN dbo.Person ON id = [Message].Person_ID
USE [Chatter]
GO
/****** Object: StoredProcedure [dbo].[usp_InsertMessage] Script Date: 11/18/2005 13:59:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[usp_InsertMessage]
@Message nvarchar(200),
@Person_ID int
AS
INSERT INTO [Message] ([Message], Person_ID)
VALUES (@Message, @Person_ID)
GO
/****************************************/
INSERT INTO [Chatter].[dbo].[Person]
([Name])
VALUES('Larry')
GO
INSERT INTO [Chatter].[dbo].[Person]
([Name])
VALUES('Moe')
GO
INSERT INTO [Chatter].[dbo].[Person]
([Name])
VALUES('Curly')
这是我的数据库创建脚本(我只是用“ISS”替换了所有“Chatter”)
USE [master]
GO
/****** Object: Database [ISS] Script Date: 11/18/2005 13:55:20 ******/
CREATE DATABASE [ISS] ON PRIMARY
( NAME = N'ISS', FILENAME = N'D:\iss.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'ISS_log', FILENAME = N'D:\iss_log.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'ISS', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [ISS].[dbo].[sp_fulltext_database] @action = 'disable'
end
GO
ALTER DATABASE [ISS] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [ISS] SET ANSI_NULLS OFF
GO
ALTER DATABASE [ISS] SET ANSI_PADDING OFF
GO
ALTER DATABASE [ISS] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [ISS] SET ARITHABORT OFF
GO
ALTER DATABASE [ISS] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [ISS] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [ISS] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [ISS] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [ISS] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [ISS] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [ISS] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [ISS] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [ISS] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [ISS] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [ISS] SET ENABLE_BROKER
GO
ALTER DATABASE [ISS] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [ISS] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [ISS] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [ISS] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [ISS] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [ISS] SET READ_WRITE
GO
ALTER DATABASE [ISS] SET RECOVERY FULL
GO
ALTER DATABASE [ISS] SET MULTI_USER
GO
ALTER DATABASE [ISS] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [ISS] SET DB_CHAINING OFF
USE [ISS]
create table sectii (
cods int identity(0,1) primary key,
denumire varchar(30) not null,
)
create table useri (
codu int identity(0,1) primary key,
login varchar(20) not null,
password varchar(30) not null,
cods int foreign key references sectii(cods),
tip int not null,
)
create table medicamente (
codm int identity(0,1) primary key,
denumire varchar(50) not null
)
create table comenzi (
codc int identity(0,1) primary key,
cods int foreign key references sectii(cods),
data datetime not null,
codu int foreign key references useri(codu), --nu e nevoie
onorata bit
)
create table medicamente_comanda (
codc int foreign key references comenzi(codc) ON DELETE CASCADE,
codm int foreign key references medicamente(codm),
cantitate int
)
最佳答案
您的基础表结构中可能有不正确的数据类型或其他一些非法问题。我建议您查看这篇文章并确保您满足“支持的 SELECT 语句”部分下的所有条件:
http://msdn.microsoft.com/en-us/library/ms181122%28v=sql.105%29.aspx
关于c# - SqlDependency 不会触发 OnChange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10555695/
我想使用 SignalR 和 SQLDependency 仅从数据库获取更新的行。 表的状态列可以从多个应用程序更新。我需要的是,当此状态列更新时,我需要我的应用程序获取状态实时更新的记录。我正在尝试
我试图在 SignalR 项目中使用 SqlDependancy,但我似乎无法多次触发 OnChanged 事件。它最初在订阅事件上触发,但在对基础数据库进行更改后再也不会触发。我省略了我的 Sign
我们正在开发一个 WPF 应用程序,使用 SqlDependencies 来根据数据库更新应用程序。我们已经认识到几次,查询通知似乎是不规则的——应用程序不显示数据库的最新状态。一旦其他人更改了桌面上
我正在使用 SqlDependency 在某些表中的数据发生更改时获得通知。 private void subscribeBroker() { using (var c
是否可以在 C# 中为 Sql Server 运行 SqlDependency 而无需执行查询? 我有一些可以变得相当大的表。跨表执行查询以判断行是否已更改可能需要很长时间。 最佳答案 不,SqlDe
我想在我的项目中使用 SqlDependency,但是我想要依赖的表正被多个程序用于非常重要的目的。因此,他们必须能够在 SqlDependency 运行时插入此表。这可能吗? 我读过 this问题,
我刚刚从 Microsoft 官方来源复制了示例 http://msdn.microsoft.com/en-us/library/a52dhwx7(v=vs.80).aspx我对此感到困惑。运行应用程
我正在尝试使用 SqlDependency 编写代码来注册通知,但我无法让它工作。我首先尝试在 .Net 中使用 Visual Studio,然后将其编译为 Mono。这是我的代码:http://pa
我正在尝试让查询通知在 SQL Server 2012 上运行。我正在按照此链接中的教程进行操作:http://www.codeproject.com/Articles/144344/Query-No
背景: 在设置 SqlDependency 时,我使用了这些文章中的信息来为数据库用户提供所需的最低权限: Minimum Database Permissions Required for SqlD
我想在我的项目中使用 SQLDependency 和依赖注入(inject)。这是我的代码 public interface IAreaRepository { string GetAreaQu
我有一个简单的查询,事件在正确的时间触发。但是,一旦触发,SqlDependency 对象的属性 .HasChanges 始终设置为 true。 第一次触发 OnChange 时,SqlNotific
我有一个包含聊天信息的 mssql 表。它有计算列,有数百万行,并且正在被第三方应用程序使用/填充。现在我想使用此表在我的网站上显示聊天记录,并且将来可能能够使用 signalr 发送消息。我使用 s
我一直在使用 SqlDependency在 .NET 3.5 应用程序中使用超过 3 年没有任何问题。场景如下: 带有 SqlDependency 的中央窗口服务看一张 table (我们称这张 ta
我将表用作消息队列并使用 SqlDependency“注册”更新。在我读到的所有地方,人们都在说“注意它的局限性”,但没有具体说明它们是什么。据我了解,当表的更新频率非常高时,您会遇到问题;幸运的是,
我目前的情况是我有一个应用程序需要在新数据到达数据库表时得到通知。数据来自外部来源(我无法控制——这是唯一的集成选项)。当新数据到达时,我的应用程序需要采取某些操作——基本上是查询新数据、处理它、将结
我有一个关于 SqlDependency 的简短问题。我在故障转移群集中配置了两个 SQL 2005 服务器。 当事件节点更改时,我停止接收通知...我必须手动重新启动承载 SqlDependency
使用 SQLDependency 需要什么权限?我在网上查了书,但没有明确这一点。 最佳答案 这有效: CREATE SCHEMA sql_dependency_user --empty placeh
在过去 3 天为这个问题苦苦挣扎之后,我终于把我的问题放在这里了。 我正在尝试使用 SignalR 和 SqlDependency 构建一个实时应用程序。显然,SQLDependency 不工作。但是
我的数据库中有两个表,一个记录异常,另一个记录日志消息。 我正在利用 SqlDependency 对象在这些表更改时收到通知,以便我可以更新我的网络仪表板。我得到了这个工作: public IEnum
我是一名优秀的程序员,十分优秀!