Saya sedang melakukan pengembangan aktif pada skema saya di SQL Server 2008 dan sering ingin menjalankan kembali drop / buat skrip database saya. Ketika saya berlari
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
Saya sering mendapatkan kesalahan ini
Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Jika Anda mengklik kanan pada database di panel objek explorer dan memilih tugas Hapus dari menu konteks, ada kotak centang yang untuk "menutup koneksi yang ada"
Apakah ada cara untuk menentukan opsi ini dalam skrip saya?
sql
sql-server
nick
sumber
sumber
Buka studio manajemen dan lakukan semua yang Anda gambarkan, hanya alih-alih mengklik OK, klik pada Skrip. Ini akan menunjukkan kode yang akan dijalankan yang kemudian dapat Anda masukkan ke dalam skrip Anda.
Dalam hal ini, Anda ingin:
sumber
Menurut dokumentasi ALTER DATABASE SET , masih ada kemungkinan bahwa setelah mengatur basis data ke mode SINGLE_USER Anda tidak akan dapat mengakses basis data itu:
Jadi, skrip lengkap untuk menjatuhkan database dengan koneksi yang ada mungkin terlihat seperti ini:
sumber
Saya tahu ini sudah terlambat tetapi mungkin ini membantu seseorang. untuk menggunakan ini, buat database Anda offline
sumber
Saya mencoba apa yang dikatakan hgmnz di SQL Server 2012.
Manajemen dibuat untuk saya:
sumber
ROLLBACK IMMEDIATE
pernyataan itu akan dimasukkan. Itusp_delete_database_backuphistory
berasal dari memeriksa "Hapus cadangan dan pulihkan informasi riwayat untuk basis data".ALTER DATABASE SET SINGLE_USER ...
jika tidak ada koneksi saat ini untuk menutup.coba kode C # ini untuk menjatuhkan basis data Anda
DropDatabases public static batal (string dataBase) {
sumber