Брокер службы SQL Server сообщает, что он отключен, когда я написал запрос для его включения - PullRequest
1 голос
/ 22 августа 2009

Я сделал небольшой сайт ASP.NET. Использует sqlcachedependency

Компонент SQL Server Service Broker для текущей базы данных не включен, и в результате уведомления о запросах не поддерживаются. Пожалуйста, включите компонент Service Broker для этой базы данных, если вы хотите использовать уведомления.

Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и месте ее возникновения в коде.

Сведения об исключении: System.InvalidOperationException: компонент SQL Server Service Broker для текущей базы данных не включен, и в результате уведомления о запросах не поддерживаются. Пожалуйста, включите компонент Service Broker для этой базы данных, если вы хотите использовать уведомления.

Ошибка источника:

Строка 12: System.Data.SqlClient.SqlDependency.Start (connString);

Это ошибочная строка в моем global.asax.

Однако в sql server (2005) я включил компонент Service Broker следующим образом (я подключаюсь и запускаю службу SQL Server, когда отлаживаю свой сайт):

ALTER DATABASE mynewdatabase SET ENABLE_BROKER с немедленным откатом

И это было успешно.

Чего мне не хватает? Я пытаюсь использовать зависимости кэширования sql и выполнил все процедуры.

Спасибо

Ответы [ 4 ]

1 голос
/ 30 декабря 2010

Я столкнулся с той же проблемой на одном из наших серверов. это решило проблему (замените DBNAME именем базы данных)

УСТАНОВИТЬ ИМЯ_БАЗЫ ДАННЫХ ALTER DATABE NEW_BROKER С ОТКРЫТОМ РОЛБЭКОМ;

УСТАНОВКА ДАННОГО ИМЕНИ БАЗЫ ДАННЫХ ALTER ENABLE_BROKER;

Наконец, проверьте, получаете ли вы 1 для флага is_broker_enabled:

SELECT is_broker_enabled ИЗ sys.databases WHERE name = 'DBNAME'

0 голосов
/ 28 июня 2016

Вы можете изменить его на

База данных -> Свойства -> Параметры -> Компонент Service Broker

0 голосов
/ 22 августа 2009

Откажитесь от «с немедленным откатом» и попробуйте снова выполнить оператор.

Это зависает? Если это так, убейте все другие сеансы, которые находятся в базе данных и блокируют сеанс, пытаясь изменить базу данных.

Вот сценарий, который я упомянул в своем комментарии.

use master
go
declare @parent int
declare @cmd varchar(100)

set @parent = 53

while exists (select * from sys.sysprocesses where spid = @parent and blocked <> 0)
begin
    select @cmd = 'kill ' + cast(blocked as varchar(10))
    from sys.sysprocesses
    where spid = @parent 

    print @cmd

    exec (@cmd)
end
0 голосов
/ 22 августа 2009

Используете ли вы обычный экземпляр SQL, включая Express, или Пользовательские экземпляры ? то есть. ваша строка подключения использует параметр "AttachDbFilename"? В пользовательских экземплярах, поскольку MDF-файл подключается при каждом создании экземпляра, компонент Service Broker каждый раз отключается, поскольку операции присоединения и восстановления всегда отключают посредника в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...