Forum

Sql Servera sorgu g...
 
Bildirimler
Hepsini Temizle

Sql Servera sorgu gönderen kişi sayısını bulmak

3 Yazılar
2 Üyeler
0 Reactions
1,143 Görüntüleme
(@FatihDEMiR)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Merhaba,

Erp kullanan bir müşterim var. Kullanılan ERP Exe aracılığı ile, server'a sorgular gönderiliyor. (Ürün ara, Firma ara, kaydet vs. farketmez. SQL server ile iletişime geçmiş olması ve herhangi bir sorguyu göndermesi yeterli.)

Son 30 dakika içersinde server'a, Hangi hostname, hangi veritabanına, en son hangi sorguyu göndermiş.

Makine adı | Veritabanı adı | Son sorgu zamanı | Sorgu cümlesi

 Aktif kullanıcı sayısını anlamaya çalışıyorum. Yani en son hangi makine sql servera hangi sorguyu göndermiş gibi bir sql scriptine ihtiyacım var.

Elinde böyle bir scripti olan var ise yardımcı olabilir mi ? 

 
Gönderildi : 12/03/2015 13:53

(@FatihDEMiR)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Merhaba,

Şöyle bir script hazırladım. Tam olarak istediğimi vermese de az da olsa işimi gördü. Başkalarına lazım olabilir düşüncesi ile scripti paylaşayım.

 

IF EXISTS (SELECT *



FROM tempdb.dbo.sysobjects



WHERE id = OBJECT_ID('tempdb..#LISTE') AND xtype = 'U') DROP TABLE #LISTE



CREATE TABLE #LISTE (



spid INT



,ecid INT



,status varchar(1024)



,loginame varchar(1024)



,hostname varchar(1024)



,blk INT



,dbname varchar(1024)



,cmd varchar(1024)



,request_id INT



)



 

INSERT INTO #LISTE (



spid

,ecid



,status



,loginame



,hostname



,blk



,dbname



,cmd



,request_id

 

)



exec sp_who



SELECT L.hostname, L.dbname, X.last_batch, X.query_text, X.BEKLEYEN_SURE_SAAT FROM

#LISTE L

INNER JOIN (



SELECT



DB_NAME(s.dbid) as DBName,


s.loginame as LoginName,


s.hostname,


(SELECT text FROM sys.dm_exec_sql_text(s.sql_handle)) AS query_text


,s.login_time, s.last_batch


,DATEDIFF(SECOND, s.last_batch, GETDATE()) / 60 / 60 AS BEKLEYEN_SURE_SAAT


FROM sys.sysprocesses s



INNER JOIN (



SELECT loginame, hostname, max(last_batch) as last_batch FROM sys.sysprocesses



where (SELECT text FROM sys.dm_exec_sql_text(sql_handle)) is not null



group by loginame, hostname



) x on s.loginame = x.loginame and s.hostname = x.hostname and s.last_batch = x.last_batch



WHERE



dbid > 0



and (SELECT text FROM sys.dm_exec_sql_text(sql_handle)) is not null



) X ON X.DBName = L.dbname AND X.LoginName = L.loginame AND X.hostname = L.hostname


WHERE ISNULL(L.hostname,'') <> ''



group by L.hostname, L.dbname, X.last_batch, X.query_text, X.LoginName,X.query_text, X.BEKLEYEN_SURE_SAAT



ORDER BY L.hostname

 

 
Gönderildi : 12/03/2015 18:48

(@MustafaHEPSARILAR)
Gönderiler: 114
Estimable Member
 

Merhaba,

Bu script te şu an ki sorgular, updateler vb. gibi raporu ve hangi ip olduğunu nasıl görebiliriz.

Tşk.

 

 
Gönderildi : 19/03/2015 17:21

Paylaş: