Troubleshooting Guide: SQL Server Error 9684 — “The Service With ID %d Has Been Dropped”
Why This Error Happens
Error 9684 typically occurs when SQL Server’s Service Broker subsystem removes a service definition because its associated queue or contract has been dropped or corrupted, often during a database restore, replication reconfiguration, or manual DDL cleanup. This can also happen when internal metadata in sys.services or sys.service_queues becomes inconsistent due to improper transaction rollback or abrupt server shutdown. In some cases, insufficient permissions on the msdb or application database prevent Service Broker from properly re-registering the service during startup.
Step-by-Step Resolution Guide
Step 1: Verify Service Broker Status and Metadata
- Open SQL Server Management Studio (SSMS) and connect to the affected instance.
- Run the following query to check if Service Broker is enabled on the database:
SELECT name, is_broker_enabled FROM sys.databases WHERE name = 'YourDatabaseName';
- If
is_broker_enabledreturns0, enable it:
ALTER DATABASE YourDatabaseName SET ENABLE_BROKER;
Step 2: Inspect and Recreate the Dropped Service
- Query the system views to confirm the service and queue no longer exist:
SELECT * FROM sys.services;
SELECT * FROM sys.service_queues;
- If the service was unintentionally dropped, recreate it along with its queue and contract:
CREATE QUEUE YourQueueName;
CREATE SERVICE YourServiceName ON QUEUE YourQueueName ([YourContractName]);
- Ensure the contract and message types referenced still exist in the database schema.
Step 3: Check Permissions and Ownership
- Confirm that the service account running SQL Server has
CONTROLpermission on the affected database. - In Windows Server 2025 / Windows 11, open Services.msc, locate the SQL Server service, and verify it is running under a valid domain or managed service account.
- Grant explicit permissions if needed:
GRANT CONTROL ON SERVICE::YourServiceName TO [YourLogin];
Step 4: Restart SQL Server and Monitor Logs
- Restart the SQL Server service via SQL Server Configuration Manager to force Service Broker to reinitialize.
- Open the SQL Server Error Log (
Management > SQL Server Logsin SSMS) and search for recurring Event ID 9684 entries to confirm resolution.
Alternative or Verification Steps
- Run
SELECT * FROM sys.transmission_queue;to confirm there are no orphaned messages referencing the dropped service — this table should return no rows tied to the missing service ID. - If the issue persists, restore the affected database from a known-good backup taken before the service was dropped, then re-apply any transactional changes to avoid repeated metadata corruption.