Cách buộc cơ sở dữ liệu SQL Server 2008 chuyển sang Ngoại tuyến


106

Làm cách nào để buộc Cơ sở dữ liệu của tôi ở chế độ Ngoại tuyến mà không quan tâm đến cái gì hoặc ai đang sử dụng nó?

Tôi đã thử:

ALTER DATABASE database-name SET OFFLINE;

Nhưng nó vẫn bị treo sau 7 phút.

Tôi muốn điều này bởi vì tôi cần phải kiểm tra kịch bản.

Nếu nó thậm chí có thể?

Câu trả lời:


186

Đi ngoại tuyến

USE master
GO
ALTER DATABASE YourDatabaseName
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

Lên mạng

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO

8
@radbyx: MSDN nói để sử dụng masterkhi hoạt động DB của tiểu bang
abatishchev

17
@radbyx: Nếu bạn SỬ DỤNG MY_DATABASE, thì ALTER DATABASE MY_DATABASE SET OFFLINE sẽ không thành công, bạn đang sử dụng nó! Vâng, tôi chỉ bị cắn bởi điều đó ...
TarkaDaal

10
Không hoạt động đối với tôi: Msg 5061, Mức 16, Trạng thái 1, Dòng 1 CƠ SỞ DỮ LIỆU THAY THẾ không thành công vì không thể đặt khóa trên cơ sở dữ liệu 'MyDatabase'. Thử lại sau. Msg 5069, Mức 16, Trạng thái 1, Dòng 1 Câu lệnh ALTER DATABASE không thành công.
Andez

6
Tôi đã thấy những trường hợp xảy ra mà bạn vẫn cần sử dụng 'sp_who2 active' / 'sp_whoisactive' để xem một số kết nối cứng đầu từ các máy công việc đã lên lịch hoặc nội dung trung gian và chạy KILL với số SPID để loại bỏ chúng
Chris Wood

24

Bạn cần sử dụng WITH ROLLBACK IMMEDIATEđể khởi động các hình nón khác mà không liên quan đến cái gì hoặc ai đang sử dụng nó.

Hoặc sử dụng WITH NO_WAITđể không treo và không giết các kết nối hiện có. Xem http://www.blackwasp.co.uk/SQLOffline.aspx để biết chi tiết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.