Cara memaksa database SQL Server 2008 menjadi Offline

106

Bagaimana cara memaksa Database saya menjadi Offline, tanpa memperhatikan apa atau siapa yang sudah menggunakannya?

Saya mencoba:

ALTER DATABASE database-name SET OFFLINE;

Tapi masih menggantung setelah 7 menit.

Saya menginginkan ini karena saya perlu menguji skenario.

Jika itu mungkin?

radbyx
sumber

Jawaban:

186

Pergi offline

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

Online

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO
abatishchev
sumber
8
@radbyx: MSDN mengatakan untuk digunakan mastersaat mengoperasikan status DB
abatishchev
17
@radbyx: Jika Anda MENGGUNAKAN MY_DATABASE, maka ALTER DATABASE MY_DATABASE SET OFFLINE akan gagal, karena Anda sedang menggunakannya! Ya, saya baru saja tersengat oleh ...
TarkaDaal
10
Tidak berhasil untuk saya: Msg 5061, Level 16, Status 1, Baris 1 ALTER DATABASE gagal karena kunci tidak dapat ditempatkan pada database 'MyDatabase'. Coba lagi nanti. Msg 5069, level 16, negara bagian 1, baris 1 pernyataan ALTER DATABASE gagal.
Andez
6
Saya telah melihat kejadian di mana Anda masih perlu menggunakan 'sp_who2 active' / 'sp_whoisactive' untuk melihat beberapa koneksi keras kepala dari mesin pekerjaan terjadwal atau hal-hal yang lebih menengah dan menjalankan KILL dengan nomor SPID untuk menyingkirkannya
Chris Wood
24

Anda perlu menggunakan WITH ROLLBACK IMMEDIATEuntuk mem-boot koneksi lain tanpa memperhatikan apa atau siapa yang sudah menggunakannya.

Atau gunakan WITH NO_WAITuntuk tidak hang dan tidak mematikan koneksi yang ada. Lihat http://www.blackwasp.co.uk/SQLOffline.aspx untuk detailnya

Martin Smith
sumber