Saya menggunakan SQL server 2008 dan studio manajemennya. Saya mengeksekusi kueri yang menghasilkan banyak baris. Saya mencoba membatalkannya melalui tombol batal merah, tetapi tidak berhenti selama 10 menit terakhir. Biasanya berhenti dalam 3 menit.
Apa alasannya dan bagaimana cara menghentikannya segera?
sql
sql-server
sql-server-2008
sequel.learner
sumber
sumber
Jawaban:
Pembatalan kueri segera dilakukan, asalkan perhatian Anda dapat mencapai server dan diproses. Kueri harus dalam keadaan dapat dibatalkan, yang hampir selalu benar kecuali jika Anda melakukan operasi tertentu seperti memanggil layanan web dari SQLCLR. Jika perhatian Anda tidak dapat mencapai server, itu biasanya karena penjadwal kelebihan beban.
Tetapi jika kueri Anda adalah bagian dari transaksi yang harus dibatalkan, maka rollback tidak dapat dihentikan. Jika dibutuhkan 10 menit maka itu perlu 10 menit dan tidak ada yang dapat Anda lakukan. Bahkan me-restart server tidak akan membantu, itu hanya akan membuat startup lebih lama karena pemulihan harus menyelesaikan rollback.
Untuk menjawab alasan spesifik mana yang berlaku untuk kasus Anda, Anda harus menyelidikinya sendiri.
sumber
Periksa nilai di bawah CPUTime dan DiskIO . Perhatikan SPID proses yang memiliki nilai besar secara komparatif.
kill {SPID value}
sumber
Pertama jalankan perintah di bawah ini:
Setelah itu jalankan perintah di bawah ini dengan SPID, yang Anda dapatkan dari perintah di atas:
KILL {SPID value}
sumber
Ini adalah jenis jawaban yang konyol, tetapi bekerja dengan andal setidaknya dalam kasus saya: Di studio manajemen, ketika "Batalkan Kueri Pelaksana" tidak menghentikan kueri, saya cukup mengklik untuk menutup dokumen sql saat ini. itu menanyakan saya apakah saya ingin membatalkan kueri, saya mengatakan ya, dan lihatlah dalam beberapa detik itu berhenti mengeksekusi. Setelah itu saya ditanya apakah saya ingin menyimpan dokumen sebelum menutup. Pada titik ini saya dapat mengklik Batal agar dokumen tetap terbuka dan terus bekerja. Tidak tahu apa yang terjadi di balik layar, tetapi tampaknya berhasil.
sumber
Jika Anda membatalkan dan melihat lari itu
(Monitor Aktivitas tidak akan tersedia di sql server 2000 FYI lama)
Temukan SPID yang ingin Anda bunuh, misalnya 81
Kill 81
Jalankan
sp_who2 'active'
lagi dan Anda mungkin akan melihatnya sedang tidur ... berguling kembaliUntuk menjalankan STATUS kembali, PEMBUNUHAN
Kill 81
Kemudian Anda akan mendapatkan pesan seperti ini
SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.
sumber
KILL {spid} WITH STATUSONLY
untuk melihat pesan status.Anda dapat menggunakan pintasan keyboard ALT+ Breakuntuk menghentikan eksekusi kueri. Namun, ini mungkin tidak berhasil di semua kasus.
sumber
--Find Session Id for respective all running queries SELECT text, getdate(),* FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle) ---Kill specific session kill 125
sumber
rupanya di sql server 2008 r2 64bit, dengan kueri yang berjalan lama dari IIS, kill spid tampaknya tidak berfungsi, kueri hanya akan dimulai ulang lagi dan lagi. dan tampaknya menggunakan kembali spid. kueri menyebabkan sql server mengambil 35% cpu terus-menerus dan situs web hang. Saya menduga bc / itu tidak dapat menanggapi pertanyaan lain untuk masuk
sumber
Di bagian saya, sql saya menutup telepon ketika saya mencoba menutupnya sambil terus berlari. Jadi yang saya lakukan adalah membuka pengelola tugas saya dan mengakhiri tugas kueri sql saya. Ini menghentikan sql saya dan memulainya kembali.
sumber
Jawaban sederhana, jika kotak merah "stop" tidak berfungsi, adalah dengan mencoba menekan tombol "Ctrl + Break" pada keyboard.
Jika Anda menjalankan SQL Server di Linux, ada sebuah aplikasi yang dapat Anda tambahkan ke systray Anda yang disebut "killall". Cukup klik tombol "killall" lalu klik program yang terperangkap dalam loop dan program akan dihentikan. Semoga membantu.
sumber
Saya telah menderita hal yang sama sejak lama. Ini terutama terjadi ketika Anda terhubung ke server jarak jauh (Yang mungkin lambat), atau Anda memiliki koneksi jaringan yang buruk. Saya ragu apakah Microsoft tahu jawaban yang benar.
Tapi sejak saya mencoba mencari solusinya. Hanya 1 pendekatan awam yang berhasil
"Kueri sedang dijalankan. Apakah Anda ingin membatalkan kueri?"
Klik "Ya"
Setelah beberapa saat akan menanyakan apakah Anda ingin menyimpan kueri ini atau tidak?
Klik "Batal"
Dan setelah itu, semoga studio Anda stabil lagi untuk menjalankan kueri Anda.
Apa yang dilakukannya di latar belakang adalah memutuskan jendela kueri Anda dengan koneksi. Jadi untuk menjalankan kueri lagi, perlu waktu untuk menyambungkan kembali server jarak jauh. Tapi percayalah pada saya pertukaran ini jauh lebih baik daripada penderitaan melihat timer yang berjalan untuk selamanya.
PS: Ini bekerja untuk saya, Kudos jika bekerja untuk Anda juga. !!!
sumber