Tôi sẽ nói đừng bao giờ sử dụng điều "Hãy ngoại tuyến" trong GUI trừ khi bạn biết rằng cơ sở dữ liệu không được sử dụng. Bởi bất cứ điều gì. Điều đó thật khó để biết mà không thực hiện một số công việc, vậy tại sao không lưu tập lệnh này ở đâu đó và luôn sử dụng tập lệnh này?
USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;
Và sau đó là đối ứng tất nhiên:
ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;
Lý do bạn cần đặt nó thành SINGLE_USER
trước tiên là để loại bỏ bất kỳ người dùng hiện có nào (có một tùy chọn để làm như vậy trên hộp thoại tách ra, nhưng không phải là hộp thoại ngoại tuyến), vì SQL Server cần quyền truy cập độc quyền vào cơ sở dữ liệu để thực hiện nó nhé. Bây giờ, dù sao bạn cũng có thể muốn thực hiện một số công việc bổ sung để xem ai hiện đang sử dụng cơ sở dữ liệu, như thể bạn làm điều này ở giữa một hoạt động sao lưu lớn hoặc công việc ETL hoặc những gì có bạn, điều đó có thể có vấn đề.
EDIT : Tôi đã gửi đề xuất về Connect về điều này (xem Connect # 2687832 ) và cũng đã đăng nó lên Trello (nộp trong "Object Explorer").
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
trước ... nếu không, nó chỉ ngồi và chờ, và đối với một cơ sở dữ liệu bận rộn, điều đó có thể là mãi mãi.