2014-07-07 11 views
18

Sau khi triển khai DB triển khai (từ dự án cơ sở dữ liệu máy chủ SQL VS) trên cơ sở dữ liệu cục bộ, cơ sở dữ liệu đã bị bỏ lại trong trạng thái có chế độ người dùng đơn lẻ (triển khai chạy dưới dạng chế độ người dùng đơn).SQL Server 2008 R2 bị kẹt trong chế độ người dùng đơn

Khi tôi kết nối với nó từ SSMS và thử một cái gì đó như sau:

ALTER DATABASE MyDatabase 
SET MULTI_USER; 
GO 

tôi nhận được lỗi:

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.

Tôi đã cố gắng lấy ẩn cơ sở dữ liệu, mà SSMS nói với tôi thành công, nhưng nó dường như không thực sự làm gì cả. Cho đến nay, tôi chỉ có thể làm được điều này bằng cách thả và tạo lại cơ sở dữ liệu (không sao, vì nó chỉ là một cơ sở dữ liệu thử nghiệm cục bộ). Tuy nhiên, tôi muốn có thể đặt lại trạng thái.

Làm cách nào để thuyết phục SQL Server lấy cơ sở dữ liệu này ra khỏi chế độ người dùng đơn lẻ?

Trả lời

63

Trong chạy đầu tiên sau truy vấn trong cơ sở dữ liệu tổng thể

exec sp_who 

If you can not tìm ra thủ phạm, hãy thử

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

sau đó giết tất cả quá trình sử dụng cơ sở dữ liệu của bạn với truy vấn sau đây:

KILL spid 

Sau đó chạy sau truy vấn:

USE Master 
ALTER DATABASE YourDatabase SET MULTI_USER 
+1

Điều đó làm việc tuyệt vời - cảm ơn rất nhiều –

+2

Nếu bạn không thể tìm thấy bất kỳ mục nhập đáng ngờ nào trong đầu ra sp_who, truy vấn này đã giúp tôi - SELECT request_session_id FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID ('YourDatabase') – earthling42

+1

@ earthling42: Tôi đã thêm truy vấn của bạn (rất hữu ích) cho câu trả lời –

0

này được trả lời here, mã này là:

use master 
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER 
+0

I don' Tôi tin rằng đó là cùng một vấn đề - DB sẽ cho phép không phải các khoản tiền đó –

+0

bạn có thay thế chính bằng tên cơ sở dữ liệu của bạn không? Ngoài ra, bạn có quyền quản trị trên cơ sở dữ liệu bạn muốn thay đổi không? – Tristan

0

Sử dụng DAC (Dedicated Admin Connection). Hãy chắc chắn rằng bạn đã kích hoạt nó trước Trong loại SSMS trong admin: cho Server Name sau khi kết nối để làm chủ ALTER DATABASE SET MULTI_USER

0

Thử dưới lệnh

Đầu tiên chạy ba lệnh

USE [master] 
SET DEADLOCK_PRIORITY HIGH 
exec sp_dboption MyDBName, 'single user', 'FALSE'; 

Second chạy hai lệnh dưới đây

ALTER DATABASE MyDBName SET MULTI_USER WITH NO_WAIT 
ALTER DATABASE MyDBName SET MULTI_USER WITH ROLLBACK IMMEDIATE 
Các vấn đề liên quan