Đôi khi, bạn cần phải Take offline một Database vì một vài lý do (Backup, restore, bảo trì server hoặc bất cứ điều gì). Điều này khá đơn giản, cách thường làm là: mở SQL Server Management Studio, expand danh sách Databases, chọn Database cần Take offline, Click phải lên Database đó và chọn "Tasks / Take Offline" từ context menu.

Sẽ không có gì đánh nói nếu mọi chuyện xảy ra bình thường (database take offline và cửa sổ Take database offline đóng lại). Tuy nhiên, không phải lúc nào mọi chuyện cũng xảy ra như những gì ta muốn, đôi khi bạn sẽ thấy cửa sổ Take database offline treo mãi và không chịu đóng. Lý do là cơ sở dữ liệu của bạn vẫn còn đang được truy cập bởi một số người dùng hoặc ứng dụng từ client đến.

Để kiểm tra các kết nối đang hoạt động, mở New Query và chạy đoạn T-SQL sau:

SELECT db_name(dbid) as DB,  
count(dbid) as Connections,  
loginame as Login  
FROM sys.sysprocesses  
WHERE dbid = DB_ID('<tendb>')  
GROUP BY dbid, loginame  
ORDER BY DB  

Bạn sẽ nhìn thấy danh sách và số lượng user đang kết nối đến CSDL. Việc tiếp theo là bạn sẽ cần phải "kill" các kết nối này để làm tiếp việc của bạn.

alter database <tendb> set restricted_user with rollback immediate  

Câu lệnh trên sẽ kết thúc các kết nối, rollbak các transaction của các user đó và chỉ cho phép user có đặc quyền truy cập tới database.
Sau khi hoàn thành mọi việc, bạn trả về trạng thái đa người dùng cho Database bằng lệnh sau:

alter database <tendb> set multi_user  

Một các khác đơn giản hơn để take offline database trong trường hợp này là chạy lệnh sau:

alter database <tendb> set offline with rollback immediate

Câu lệnh này sẽ đóng các kết nối, rollback các transaction và thực hiện việc take offline database.

Chúc các bạn thàng công!