SQL Server 2008에서 Service Broker 사용
저는 제 LinqToSQL 데이터 컨텍스트에서 사용하기 위해 SqlCacheDependency를 통합하고 있습니다.
여기에 있는 Linq 쿼리에 대해 확장 클래스를 사용하고 있습니다 - http://code.msdn.microsoft.com/linqtosqlcache
코드를 연결했는데 페이지를 열면 예외가 발생합니다.
"현재 데이터베이스에 대해 SQL Server Service Broker를 사용할 수 없으므로 쿼리 알림이 지원되지 않습니다.알림을 사용하려면 이 데이터베이스에 대해 Service Broker를 활성화하십시오."
그것은 전세계적으로 이 사건에서 나온 것입니다. axax.
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
//In Application Start Event
System.Data.SqlClient.SqlDependency.Start(new dataContextDataContext().Connection.ConnectionString);
}
제 질문은...
SQL Server 2008 데이터베이스에서 Service Broker를 활성화하려면 어떻게 해야 합니까?이 쿼리를 실행하려고 했습니다.ALTER DATABATE tablename SET ENABLE_BROKER 하지만 영원히 끝나지 않고 실행되므로 수동으로 중지해야 합니다.
SQL Server 2008에 이 설정이 있으면 DataContext로 필터링이 되나요, 아니면 거기서도 구성해야 하나요?
도와주셔서 감사합니다
트루길리
다른 사람이 이 문제에 대한 해결책을 찾고 있는 경우, 다음 명령어가 저에게 아주 효과적이었습니다.대기하는 대신 데이터베이스에 대한 다른 모든 연결을 해제합니다.
ALTER DATABASE [DBNAME] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
Sql Server 2012에서 다음으로 이동할 수 있습니다.Properties-> Options -> Service Broker
OK 여기서는 백업을 사용하지 않도록 설정하거나 백업을 복원해야 할 경우 이를 수행하는 방법을 보여 줍니다.
이 스크립트를 실행하면 데이터베이스에서 사용하는 모든 프로세스가 삭제됩니다(2005년과 달리 2008년에 수동으로 프로세스를 삭제하는 이유는 저를 넘어선 것입니다). 그리고 브로커를 설정합니다.
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
DB에 대한 모든 연결을 삭제하고 브로커 서비스를 활성화하는 데 사용할 수 있는 권한을 가진 사용자 계정을 삭제해야 합니다.
다음 사항이 이상적입니다(교체).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;
또한 적절한 권한을 가진 새 역할 및 사용자 계정을 만들 것을 제안합니다(데이터베이스 로그인 대체).
--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';
ALTER DATABATE 문을 사용하여 Broker 서비스를 활성화할 수 있으며, Database 속성 > Options > Service Broker Enable에서도 Broker 서비스를 활성화:참/거짓.
그러나 여기서 문제가 되는 것은 브로커를 활성화하는 동안입니다. 프로세스는 특정 데이터베이스를 사용하여 실행되므로 이 데이터베이스를 제거한 후에야 브로커 서비스를 활성화할 수 있습니다.@JGilmartin에 의해 답변이 완벽하게 작동하지만 데이터베이스의 진행 중인 모든 프로세스가 중단되는지 확인하십시오. 프로덕션에 이 스크립트를 사용하기 전에 트래픽이나 프로세스의 심각도를 확인하십시오.
Service Broker에서 출력한 오류입니다.이미지1
수정하려면 SSMS, 이미지 2를 사용하여 서비스 브로커를 활성화합니다.
True Service Broker로 설정 오류가 사라지면 이미지 3을 참조
언급URL : https://stackoverflow.com/questions/2758976/enabling-service-broker-in-sql-server-2008
'programing' 카테고리의 다른 글
javascript에서 배열의 요소를 설정 해제하려면 어떻게 해야 합니까? (0) | 2023.11.06 |
---|---|
무한대 = 0x3f3f3f인 이유는 무엇입니까? (0) | 2023.11.06 |
ASP에서 버튼에 대한 유효성 검사를 무시하는 방법.NET? (0) | 2023.11.06 |
데이터베이스 기반 애플리케이션을 유닛 테스트하는 가장 좋은 전략은 무엇입니까? (0) | 2023.11.06 |
동시에 여러 CSS 애니메이션 재생 (0) | 2023.11.01 |