Saya mencoba melakukan pemeliharaan offline (pemulihan database dev dari cadangan langsung) pada database dev saya, tetapi perintah 'Ambil Offline' melalui SQL Server Management Studio berkinerja sangat lambat - pada urutan 30 menit plus sekarang. Saya hampir kehabisan akal dan sepertinya saya tidak dapat menemukan referensi online apa yang mungkin menyebabkan masalah kecepatan, atau bagaimana cara memperbaikinya.
Beberapa situs telah menyarankan bahwa koneksi terbuka ke database menyebabkan perlambatan ini, tetapi satu-satunya aplikasi yang menggunakan database ini adalah contoh IIS mesin dev saya, dan layanan dihentikan - tidak ada lagi koneksi terbuka.
Apa yang bisa menyebabkan perlambatan ini, dan apa yang bisa saya lakukan untuk mempercepatnya?
sumber
Kemungkinan besar ada koneksi ke DB dari suatu tempat (contoh langka: pembaruan statistik asinkron )
Untuk menemukan koneksi, gunakan proses sys.sys
Untuk memaksa pemutusan, gunakan ROLLBACK SEGERA
sumber
ALTER DATABASE failed because a lock could not be placed on database
perintahKILL <SPID>
akan membantuApakah Anda memiliki jendela SQL Server Management Studio terbuka yang terhubung ke DB ini?
Masukkan ke dalam mode pengguna tunggal, lalu coba lagi.
sumber
Dalam kasus saya, setelah menunggu begitu banyak sampai selesai saya tidak punya kesabaran dan hanya menutup studio manajemen. Sebelum keluar, itu menunjukkan pesan sukses, db sedang offline. File-file itu tersedia untuk diganti nama.
sumber
jalankan prosedur tersimpan sp_who2
Ini akan memungkinkan Anda untuk melihat apakah ada kunci pemblokiran .. bunuh mereka harus memperbaikinya.
sumber
Di SSMS: klik kanan pada ikon SQL server, Activity Monitor. Proses Terbuka. Temukan yang diproses terhubung. Klik kanan pada prosesnya, Kill.
sumber
kapan saja Anda mengalami hal semacam ini Anda harus selalu memikirkan log transaksi Anda. Statemen db alter dengan rollback langsung menunjukkan ini menjadi kasusnya. Lihat ini: http://msdn.microsoft.com/en-us/library/ms189085.aspx
Tulanglah pada pos pemeriksaan, dll. Anda perlu memutuskan apakah transaksi dalam log Anda layak disimpan atau tidak dan kemudian pilih mode untuk menjalankan db Anda sesuai. Tidak ada alasan bagi Anda untuk harus menunggu tetapi juga tidak ada alasan bagi Anda untuk kehilangan data - Anda dapat memiliki keduanya.
sumber
Menutup contoh SSMS (SQL Service Manager) dari mana permintaan dibuat memecahkan masalah bagi saya .....
sumber
Dalam kasus saya, saya telah melihat beberapa tabel dalam DB sebelum melakukan tindakan ini. Akun pengguna saya memegang koneksi aktif ke DB ini di SSMS. Setelah saya terputus dari server di SSMS (membiarkan kotak dialog 'Take database offline' terbuka) operasi berhasil.
sumber
Untuk menyiasatinya, saya menghentikan situs web yang terhubung ke db di IIS dan segera panel 'beku' 'take db offline' menjadi tidak beku.
sumber
Saya mencoba semua saran di bawah ini dan tidak ada yang berhasil.
Bunuh <SPID>
ALTER DATABASE SET SINGLE_USER DENGAN Rollback Segera
ALTER DATABASE SET OFFLINE DENGAN ROLLBACK SEGERA
Hasil: Kedua perintah di atas juga macet.
4. Klik kanan database -> Properties -> Options Set Database Read-Only ke True Klik 'Yes' pada dialog peringatan SQL Server akan menutup semua koneksi ke database.
Hasil: Jendela macet saat dieksekusi.
Sebagai upaya terakhir, saya me-restart layanan SQL server dari manajer konfigurasi dan kemudian menjalankan ALTER DATABASE SET OFFLINE DENGAN ROLLBACK SEGERA. Itu bekerja seperti pesona
sumber
Juga, tutup semua jendela kueri yang mungkin Anda buka yang terhubung ke database yang dimaksud;)
sumber
Di SSMS, atur database menjadi hanya-baca lalu kembali. Koneksi akan ditutup, yang membebaskan kunci.
Dalam kasus saya ada situs web yang memiliki koneksi terbuka ke database. Metode ini cukup mudah:
Database Read-Only
ke Truesumber
Bagi saya, saya hanya harus masuk ke Monitor Aktivitas Kerja dan menghentikan dua hal yang sedang diproses. Kemudian langsung offline. Dalam kasus saya, saya tahu apa 2 proses itu dan tidak masalah untuk menghentikannya.
sumber
Dalam kasus saya, database terkait dengan instalasi Sharepoint lama. Menghentikan dan menonaktifkan layanan terkait di manajer server "unhung" mengambil tindakan offline, yang telah berjalan selama 40 menit, dan itu selesai segera.
Anda mungkin ingin memeriksa apakah ada layanan yang saat ini menggunakan database.
sumber
sp_who2
untuk melihat proses apa yang menggunakan database dan gunakankill <PID>
untuk menghentikannya.Lain kali, dari dialog Take Offline, ingatlah untuk mencentang kotak centang 'Jatuhkan Semua Koneksi Aktif'. Saya juga menggunakan SQL_EXPRESS di mesin lokal tanpa koneksi, tetapi perlambatan ini terjadi pada saya kecuali saya memeriksa kotak centang itu.
sumber
Dalam kasus saya, saya menghentikan server Tomcat. lalu segera DB menjadi offline.
sumber