JGi*_*tin 48 linq asp.net datacontext caching sqlcachedependency
我正在集成SqlCacheDependency以在我的LinqToSQL datacontext中使用.
我在这里找到Linq查询的扩展类 - http://code.msdn.microsoft.com/linqtosqlcache
我已经连接了代码,当我打开页面时,我得到了这个例外 -
"未启用当前数据库的SQL Server Service Broker,因此不支持查询通知.如果您希望使用通知,请为此数据库启用Service Broker."
它来自global.asax中的这个事件
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
//In Application Start Event
System.Data.SqlClient.SqlDependency.Start(new dataContextDataContext().Connection.ConnectionString);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是......
如何在我的SQL Server 2008数据库中启用Service Broker?我试图运行此查询.. ALTER DATABASE tablename SET ENABLE_BROKER但它永远不会结束并且永远运行,我必须手动停止它.
一旦我在SQL Server 2008中设置了这个设置,它会过滤到我的DataContext,还是我还需要配置它?
谢谢你的帮助
Truegilly
Mat*_*att 107
如果其他人正在寻找这个问题的解决方案,以下命令对我来说非常有用.它释放与数据库的所有其他连接,而不是等待.
ALTER DATABASE [DBNAME] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
JGi*_*tin 31
好的,这里是如何执行此操作,如果您的禁用或您需要恢复备份,这似乎禁用它.
只运行这个脚本,它会杀死数据库正在使用的所有进程(为什么你在2008年手动杀死进程的方式与2005年不同)然后设置代理
USE master
go
DECLARE @dbname sysname
SET @dbname = 'YourDBName'
DECLARE @spid int
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN
EXECUTE ('KILL ' + @spid)
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid
END
ALTER DATABASE @dbname SET ENABLE_BROKER
Run Code Online (Sandbox Code Playgroud)
小智 5
必须删除与数据库的所有连接,并使用具有权限的用户帐户来启用代理服务。
以下将是理想的(替换databasename):
IF ((SELECT is_broker_enabled FROM sys.databases WHERE name = '%DATABASE_NAME%') = 1)
BEGIN
ALTER DATABASE %DATABASE_NAME% SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
END
ALTER DATABASE %DATABASE_NAME% SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)
另外我建议创建一个具有适当权限的新角色和用户帐户(替换数据库登录):
--DBA creates a new role
if not exists (select 1 from sys.database_principals where name='sql_dependency_subscriber' and Type = 'R')
begin
EXEC sp_addrole 'sql_dependency_subscriber'
end
--Minimum Required Permissions needed for SQLDependancy Notification to work
GRANT CREATE PROCEDURE to sql_dependency_subscriber;
GRANT CREATE QUEUE to sql_dependency_subscriber;
GRANT CREATE SERVICE to sql_dependency_subscriber;
GRANT REFERENCES on CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] to sql_dependency_subscriber ;
GRANT VIEW DEFINITION TO sql_dependency_subscriber;
--Minimum Required Permissions needed for SQLDependaney Notification to work
GRANT SELECT to sql_dependency_subscriber;
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO sql_dependency_subscriber;
GRANT RECEIVE ON QueryNotificationErrorsQueue TO sql_dependency_subscriber;
GRANT REFERENCES on CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] to sql_dependency_subscriber ;
EXEC sp_addrolemember 'sql_dependency_subscriber', '%DATABASE_LOGIN%';
EXEC sp_addrolemember 'sql_dependency_subscriber', 'sqldp';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71296 次 |
| 最近记录: |