ฉันจะบอกว่าไม่เคยใช้สิ่ง "ใช้ออฟไลน์" ใน GUI เว้นแต่คุณจะทราบว่าฐานข้อมูลไม่ได้ใช้งาน โดยอะไรก็ได้ นั่นเป็นเรื่องยากที่จะทราบโดยไม่ต้องทำตามกฎหมายดังนั้นทำไมไม่บันทึกสคริปต์นี้ไว้ที่อื่นและใช้มันตลอดเวลา?
USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;
แล้วแน่นอนซึ่งกันและกัน:
ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;
เหตุผลที่คุณจำเป็นต้องตั้งค่าเป็นSINGLE_USER
อันดับแรกคือการเตะผู้ใช้ที่มีอยู่ใด ๆ (มีตัวเลือกให้ทำในกล่องโต้ตอบแยกออก แต่ไม่ใช่กล่องโต้ตอบออฟไลน์แบบออฟไลน์) เนื่องจาก SQL Server ต้องการการเข้าถึงฐานข้อมูลแบบเอกสิทธิ์เฉพาะบุคคล มันออฟไลน์ ทีนี้คุณอาจต้องการทำงานพิเศษเพิ่มเติมเพื่อดูว่าใครกำลังใช้ฐานข้อมูลอยู่ราวกับว่าคุณทำสิ่งนี้ในระหว่างการสำรองข้อมูลขนาดใหญ่หรืองาน ETL หรือสิ่งที่มีในตัวคุณซึ่งอาจเป็นปัญหา
แก้ไข : ฉันได้ยื่นคำแนะนำเกี่ยวกับการเชื่อมต่อเกี่ยวกับเรื่องนี้ (ดูเชื่อมต่อ # 2687832 ) และได้โพสต์ไว้ในTrello (ยื่นใต้ "Object Explorer")
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ก่อน ... ไม่อย่างนั้นมันจะนั่งรอและสำหรับฐานข้อมูลที่ไม่ว่างนั่นอาจจะเป็นตลอดไป