Open AlexanderSavelyev opened 3 years ago
the only place there the service broker is used https://github.com/epam/Indigo/blob/1196b66f9f889359eab50fd705b6b8ab16c24455/bingo/sqlserver/sql/bingo_create.sql#L115 where it subscribes an event from databases, e.g. remove index if a table was removed So a possible step to reproduce is to loop create table create index drop table
possible fix to to use clean for the queue
declare @c uniqueidentifier
while(1=1)
begin
select top 1 @c = conversation_handle from [$(bingo)].notify_queue
if (@@ROWCOUNT = 0)
break
end conversation @c with cleanup
end
-- What condition/action causes a sys.conversation_endpoints object to go from status_desc STARTEDOUTBOUND to CONVERSING? -- Can the event notification be created on the DATABASE level instead of the SERVER level, thus: create event notification $(bingo)$(database)_logout_notify on database
We managed to reproduce the issue. Unfortunately, there are no simple solutions, e.g. it is not possible to change the notification from server to database level since the necessary events can only be taken from the database level. Overall the problem is that backup overwrites the database notifications Right now we are working on updating the installation script to be able to fix the following scenarios:
The solution will require to execute the installation script after each backup restore. @thomaskoppcsharp will it work for you?
Additionally, as a possible solution, to stop sysxmitqueue flooding, you can manually delete previously created event notification (from bingo installation) using the next SQL command:
drop event notification bingo_DBNAME_logout_notify on server
Created event notifications could be retrieved using:
select * from msdb.sys.server_event_notifications
some of the issues were resolved in #378
The msdb.sysxmitqueue table ends up with millions of records. Our dba has put together some questions to try to track down this issue.