sqlsql-serverdatabasesql-server-2008database-deployment

SQL Server 2008 R2 Stuck in Single User Mode


Having executed a DB deploy (from a VS SQL Server database project) on a local database, which failed, the database has been left in a state where it has single user mode left on (the deploy runs as single user mode).

When I connect to it from SSMS and try something like the following:

ALTER DATABASE MyDatabase
SET MULTI_USER;
GO

I get the error:

Changes to the state or options of database 'MyDatabase' cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.

I tried taking the database offline, which SSMS tells me succeeds, but it doesn't appear to actually do anything. So far, I've only been able to get around this by dropping and recreating the database (which is kind of okay, because it's only a local test database). However, I'd like to be able to reset the status.

How can I convince SQL Server to take this database out of single user mode?


Solution

  • In first run following query in master database

    exec sp_who
    

    If you can't find the culprit, try

    SELECT request_session_id FROM sys.dm_tran_locks 
    WHERE resource_database_id = DB_ID('YourDatabase')
    

    Then kill all process that use your database with following query:

    KILL spid
    

    Then run following query:

    USE Master
    ALTER DATABASE YourDatabase SET MULTI_USER