Di bawah SQL Server, apakah ada cara mudah untuk memfilter output sp_who2? Katakanlah saya ingin hanya menunjukkan baris untuk database tertentu, misalnya.
sql-server
sql-server-2016
Craig Schwarze
sumber
sumber
Jawaban:
Anda dapat mencoba sesuatu seperti
Dan filter pada apa yang Anda butuhkan.
sumber
Anda bisa menyimpan hasilnya ke tabel temp , tetapi akan lebih baik untuk langsung menuju ke sumber
master.dbo.sysprocesses
.Berikut permintaan yang akan mengembalikan hasil yang hampir sama persis dengan
sp_who2
:Sekarang Anda dapat dengan mudah menambahkan
ORDER BY
atauWHERE
klausa yang Anda sukai untuk mendapatkan hasil yang berarti.Atau, Anda dapat mempertimbangkan menggunakan Monitor Aktivitas di SSMS ( Ctrl+ Alt+ A) juga
sumber
Salah satu caranya adalah membuat tabel temp:
sumber
berdasarkan http://web.archive.org/web/20080218124946/http://sqlserver2005.databases.aspfaq.com/how-do-i-mimim-sp-who2.html
saya telah membuat skrip berikut,
yang memutuskan menemukan koneksi aktif ke basis data apa pun menggunakan DMV ini berfungsi di bawah sql 2005, 2008 dan 2008R2
Script berikut menggunakan sys.dm_exec_sessions , sys.dm_exec_requests , sys.dm_exec_connections , sys.dm_tran_locks
sumber
Sedikit perbaikan pada jawaban Astander . Saya suka menempatkan kriteria saya di atas, dan membuatnya lebih mudah untuk digunakan kembali sehari-hari:
sumber
Ada beberapa prosedur baik yang disimpan pengguna sp_who3 di luar sana - Saya yakin Adam Machanic melakukan yang benar-benar bagus, AFAIK.
Adam menyebutnya Who Is Active: http://whoisactive.com
sumber
Mirip dengan jawaban KyleMit , mungkin untuk memilih langsung tabel yang digunakan oleh SP_WHO2, meskipun saya pikir itu hanya perlu tabel dbo.sysprocesses.
Jika seseorang membuka SP ini, ia bisa mengerti apa fungsinya. Ini adalah pilihan terbaik saya untuk memiliki output yang sama dengan SP_WHO2
Selama pemilihan ini, Anda dapat memilih bidang yang Anda butuhkan dan memiliki urutan yang Anda inginkan.
sumber
Cara yang sangat mudah untuk melakukannya adalah dengan membuat tautan ODBC di EXCEL dan menjalankan SP_WHO2 dari sana.
Anda dapat Menyegarkan kapan pun Anda mau dan karena EXCEL semuanya dapat dimanipulasi dengan mudah!
sumber
Ya, dengan menangkap output sp_who2 ke dalam tabel dan kemudian memilih dari tabel, tapi itu akan menjadi cara yang buruk untuk melakukannya. Pertama, karena sp_who2, terlepas dari popularitasnya, ini merupakan prosedur tidak berdokumen dan Anda tidak boleh bergantung pada prosedur tidak berdokumen. Kedua karena semua sp_who2 dapat melakukan, dan banyak lagi, dapat diperoleh dari sys.dm_exec_requests dan DMV lainnya, dan pertunjukan dapat disaring, dipesan, bergabung, dan semua barang lainnya yang datang dengan rowsets yang cukup bagus.
sumber
Perpanjangan jawaban pertama dan terbaik ... Saya telah membuat prosedur tersimpan pada database master yang kemudian dapat Anda berikan parameternya .. seperti nama database:
Saya mungkin memperluasnya untuk menambahkan pesanan dengan parameter atau bahkan paramatmer membunuh sehingga membunuh semua koneksi ke data tertentu
sumber
Saya menulis di sini untuk penggunaan saya sendiri di masa depan. Ini menggunakan sp_who2 dan memasukkan ke dalam variabel tabel bukan tabel temp karena tabel Temp tidak dapat digunakan dua kali jika Anda tidak menjatuhkannya. Dan menunjukkan diblokir dan diblokir pada baris yang sama.
sumber
Ini adalah solusi untuk Anda: http://blogs.technet.com/b/wardpond/archive/2005/08/01/the-openrowset-trick-accessing-stored-procedure-output-in-a-select-statement .aspx
sumber