Ini akan menunjukkan Anda SPID berjalan terpanjang pada server SQL 2000 atau SQL 2005:
select
P.spid
, right(convert(varchar,
dateadd(ms, datediff(ms, P.last_batch, getdate()), '1900-01-01'),
121), 12) as 'batch_duration'
, P.program_name
, P.hostname
, P.loginame
from master.dbo.sysprocesses P
where P.spid > 50
and P.status not in ('background', 'sleeping')
and P.cmd not in ('AWAITING COMMAND'
,'MIRROR HANDLER'
,'LAZY WRITER'
,'CHECKPOINT SLEEP'
,'RA MANAGER')
order by batch_duration desc
Jika Anda perlu melihat SQL berjalan untuk spid yang diberikan dari hasil, gunakan sesuatu seperti ini:
declare
@spid int
, @stmt_start int
, @stmt_end int
, @sql_handle binary(20)
set @spid = XXX -- Fill this in
select top 1
@sql_handle = sql_handle
, @stmt_start = case stmt_start when 0 then 0 else stmt_start / 2 end
, @stmt_end = case stmt_end when -1 then -1 else stmt_end / 2 end
from sys.sysprocesses
where spid = @spid
order by ecid
SELECT
SUBSTRING( text,
COALESCE(NULLIF(@stmt_start, 0), 1),
CASE @stmt_end
WHEN -1
THEN DATALENGTH(text)
ELSE
(@stmt_end - @stmt_start)
END
)
FROM ::fn_get_sql(@sql_handle)
ms
kuantisasi dengans
. Kemungkinan overflow dapat terjadi (terjadi pada saya).Jika Anda menjalankan SQL Server 2005 atau 2008, Anda bisa menggunakan DMV untuk menemukan ini ...
sumber
Anda dapat menjalankan perintah sp_who untuk mendapatkan daftar semua pengguna saat ini, sesi dan proses. Anda kemudian dapat menjalankan perintah KILL pada spid yang memblokir orang lain.
sumber
Saya sarankan untuk menanyakan
sys
tampilan. sesuatu yang mirip denganDengan cara ini Anda bisa mendapatkan
TotalPagesAllocated
yang dapat membantu Anda mengetahuispid
yang mengambil semua sumber daya server. Ada banyak waktu ketika saya bahkan tidak bisa membuka monitor aktivitas dan menggunakansys
tampilan ini untuk melihat apa yang terjadi.Saya akan merekomendasikan Anda membaca artikel berikut. Saya mendapat referensi ini dari sini .
sumber
Ada berbagai pandangan manajemen yang melekat pada produk. Pada SQL 2000 Anda akan menggunakan proses sys . Pada SQL 2K5 ada lebih banyak tampilan seperti sys.dm_exec_connections , sys.dm_exec_sessions dan sys.dm_exec_requests .
Ada juga prosedur seperti sp_who yang memanfaatkan pandangan ini. Di 2K5 Management Studio Anda juga mendapatkan Monitor Aktivitas.
Dan yang tak kalah pentingnya ada skrip kontribusi komunitas seperti Who Is Active oleh Adam Machanic .
sumber
Sebenarnya, menjalankan
EXEC sp_who2
di Query Analyzer / Management Studio memberikan lebih banyak info daripadasp_who
.Selain itu, Anda dapat mengatur SQL Profiler untuk menonton semua lalu lintas masuk dan keluar ke server. Profiler juga memungkinkan Anda mempersempit apa yang Anda tonton.
Untuk SQL Server 2008:
Perlu diingat bahwa profiler benar-benar aplikasi logging dan menonton. Itu akan terus login dan menonton selama itu berjalan. Itu bisa mengisi file teks atau database atau hard drive, jadi hati-hati apa yang Anda tonton dan berapa lama.
sumber
sumber
Sebagai catatan, Monitor Aktivitas SQL Server untuk SQL Server 2008 dapat ditemukan dengan mengklik kanan server Anda saat ini dan pergi ke "Monitor Aktivitas" di menu konteks. Saya menemukan ini adalah cara termudah untuk mematikan proses jika Anda menggunakan SQL Server Management Studio.
sumber
Di Object Explorer, telusuri ke: Server -> Manajemen -> Monitor Aktivitas. Ini akan memungkinkan Anda untuk melihat semua koneksi ke server saat ini.
sumber
di sini adalah kueri yang akan menampilkan kueri apa pun yang memblokir. Saya tidak sepenuhnya yakin apakah itu hanya akan menampilkan pertanyaan lambat:
sumber
Script yang tepat akan seperti ini:
sumber
Anda dapat menggunakan kueri di bawah ini untuk menemukan menjalankan permintaan terakhir:
Dengan menggunakan skrip di bawah ini Anda juga dapat menemukan jumlah koneksi per basis data:
Untuk lebih jelasnya silakan kunjungi: http://www.dbrnd.com/2015/06/script-to-find-running-process-session-logged-user-in-sql-server/
sumber
pada tahun 2005 Anda dapat mengklik kanan pada database, pergi ke laporan dan ada seluruh daftar laporan tentang transisi dan kunci dll ...
sumber
Coba dengan ini:
Ini akan memberi Anda semua pertanyaan pengguna. Hingga spid 50, itu semua adalah sesi proses internal sql server. Tapi, jika mau, Anda bisa menghapus di mana klausa:
sumber
Dan
sumber
Gunakan Sql Server Profiler (menu alat) untuk memantau permintaan eksekusi dan menggunakan monitor aktivitas di studio Manajemen untuk melihat bagaimana terhubung dan jika koneksi mereka memblokir koneksi lain.
sumber
Anda harus mencoba prosedur
sp_whoIsActive
yang sangat berguna yang dapat ditemukan di sini: http://whoisactive.com dan gratis.sumber