วิธีบังคับให้ฐานข้อมูล SQL Server 2008 ออฟไลน์


106

ฉันจะบังคับให้ฐานข้อมูลของฉันเป็นแบบออฟไลน์ได้อย่างไรโดยไม่คำนึงถึงสิ่งใดหรือใครใช้อยู่แล้ว

ฉันเหนื่อย:

ALTER DATABASE database-name SET OFFLINE;

แต่มันยังคงแขวนอยู่หลังจากผ่านไป 7 นาที

ฉันต้องการสิ่งนี้เพราะฉันต้องการทดสอบสถานการณ์

ถ้าเป็นไปได้?

คำตอบ:


186

ออฟไลน์

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

ไปออนไลน์

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO

8
@radbyx: MSDN บอกว่าจะใช้masterเมื่อใช้งานสถานะของ DB
abatishchev

17
@radbyx: หากคุณใช้ MY_DATABASE การแก้ไขฐานข้อมูล MY_DATABASE SET ออฟไลน์จะล้มเหลวเพราะคุณกำลังใช้งานอยู่! ใช่ฉันถูกต่อยโดยที่ ...
TarkaDaal

10
ไม่ได้ผลสำหรับฉัน: ข่าวสารเกี่ยวกับ 5061, ระดับ 16, สถานะ 1, บรรทัดที่ 1 แก้ไขฐานข้อมูลล้มเหลวเนื่องจากไม่สามารถวางการล็อกในฐานข้อมูล 'MyDatabase' โปรดลองอีกครั้งในภายหลัง ข่าวสารเกี่ยวกับ 5069 ระดับ 16 สถานะ 1 บรรทัดที่ 1 แก้ไขคำสั่งฐานข้อมูลล้มเหลว
Andez

6
ฉันเคยเห็นเหตุการณ์ที่คุณยังต้องใช้ 'sp_who2 active' / 'sp_whoisactive' เพื่อดูการเชื่อมต่อที่ดื้อรั้นจากเครื่องจักรงานที่กำหนดเวลาไว้หรือสิ่งที่มิดเดิ้ลและเรียกใช้ KILL ด้วยหมายเลข SPID เพื่อกำจัดมัน
Chris Wood

24

คุณจำเป็นต้องใช้WITH ROLLBACK IMMEDIATEเพื่อบูตองค์ประกอบอื่น ๆ โดยไม่คำนึงถึงสิ่งที่หรือใครใช้อยู่แล้ว

หรือใช้WITH NO_WAITเพื่อไม่แขวนและไม่ฆ่าการเชื่อมต่อที่มีอยู่ ดูhttp://www.blackwasp.co.uk/SQLOffline.aspxสำหรับรายละเอียด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.