Delphi Can

Orjinalini görmek için tıklayınız: MSSQl üzerinde çalışan bir sorgunun durumu hakkında bilgi almak.
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Herkese kolaylıklar ve hayırlı işler diliyorum öncelikle.
Hayırlı haftalar.

Ufak bir sorunum var yarımcı olabilecek arkadaşlardan yardım rica ediyorum.


Microsoft SQL Server kullanıyorum.
Çalışan mevcut yapılara bazen index eklemem gerekebiliyor veya çalışan bazı sorgular süreç olarak çok uzun zaman aldığından timeout a düşebiliyor. Bu Bazen bilgisayar kaynaklı bazen index kaynaklı olduğu için hem tespit yapabilmek hemde çalışan sorgunun durumunu anlayabilmek adına  çalıştırdığım sorgunun şu an ne aşamada olduğunu görebilir miyim. (mesela %10  ,  %20 gibi    veya    3500 / 10000  gibi maksat devam süreç hakkında bilgi sahibi olmak . Bunu SQl üzerinde ve Delphi üzerinde nasıl takip edebilirim. Bazı indexlerin bilgisayar üzerinden belli aralıklarla yapılması gerekiyor Bunun içinde bir önzileme ekranı hiç fena olmaz. Bu konuda yardım rica ediyorum.
(20-09-2021, Saat: 10:30)Bay_Y Adlı Kullanıcıdan Alıntı: [ -> ]Herkese kolaylıklar ve hayırlı işler diliyorum öncelikle.
Hayırlı haftalar.

Ufak bir sorunum var yarımcı olabilecek arkadaşlardan yardım rica ediyorum.


Microsoft SQL Server kullanıyorum.
Çalışan mevcut yapılara bazen index eklemem gerekebiliyor veya çalışan bazı sorgular süreç olarak çok uzun zaman aldığından timeout a düşebiliyor. Bu Bazen bilgisayar kaynaklı bazen index kaynaklı olduğu için hem tespit yapabilmek hemde çalışan sorgunun durumunu anlayabilmek adına  çalıştırdığım sorgunun şu an ne aşamada olduğunu görebilir miyim. (mesela %10  ,  %20 gibi    veya    3500 / 10000  gibi maksat devam süreç hakkında bilgi sahibi olmak . Bunu SQl üzerinde ve Delphi üzerinde nasıl takip edebilirim. Bazı indexlerin bilgisayar üzerinden belli aralıklarla yapılması gerekiyor Bunun içinde bir önzileme ekranı hiç fena olmaz. Bu konuda yardım rica ediyorum.

Management studio da kırmızı ile işaretlediğim button a tıkladıktan sonra çalıştırırsanız tüm süreçleri ve cost verilerine ulaşırsınız. Ayrıca sorgunuza lazım olan fakat tanımlamadığınız indexler varsa "Missing Index" yazarak sizi uyarır. Delphi tarafında da yine TSQL aracılığı ile bu verilere erişilebiliniyor.

[img]im22pm1.png[/img]
Cevabınız için teşekkür ediyorum Ali bey bahsettiğim bu değildi sanırım tam olarak anlatamadım. (aslında sonuç doğru sayılabilir çünkü bu da canlı olarak süreci takip ediyor.)

Ama istediğim çalışma esnasında bu süreç bilgilerini alıp delphi üzerinde işleyebilmek ve son kullanıcıya göstermek . ( anlaşılır olsun diye bir örnek vermek istiyorum. Yani bir tabloyu düşünün indexleme yapılacak. Başla dediğinde %1,2,3,4,5, gibi anlık görebileceğim o verilere ulaşabileceğim bir durumdan bahsediyorum.)

Yine de cevabınız için teşekkür ediyorum.
sanırım bunu karşılayan bir sorgu bulabilirim.


ZbGMS.png
profilerdan anlık olarak sorguları ve estimated time gibi bilgilere ulaşabilirsin.
profiler management studio içinde integrated olarak var.
veya azıure data studioya extension ekleyerek ücretsiz bakabilrsin.
Ücretli başka bir çok alternatifte var tabi.
Merhaba,
Aşağıdaki gibi bir kod buldum. Fakat sadece geçen süreyi veriyor. Percent kısmı sürekli 0 olarak kalıyor. Doğru olarak işaretlenen cevaptaki açıklamaları okumanızda fayda var.

SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)
AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time],
CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],
CONVERT(VARCHAR(1000),(SELECT SUBSTRING(text,r.statement_start_offset/2,
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)
FROM sys.dm_exec_sql_text(sql_handle)))
FROM sys.dm_exec_requests r WHERE command IN ('Alter Index')
(20-09-2021, Saat: 18:43)barutali Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Aşağıdaki gibi bir kod buldum. Fakat sadece geçen süreyi veriyor. Percent kısmı sürekli 0 olarak kalıyor. Doğru olarak işaretlenen cevaptaki açıklamaları okumanızda fayda var.

SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)
AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time],
CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],
CONVERT(VARCHAR(1000),(SELECT SUBSTRING(text,r.statement_start_offset/2,
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)
FROM sys.dm_exec_sql_text(sql_handle)))
FROM sys.dm_exec_requests r WHERE command IN ('Alter Index')

Teşekkürler , Bende araştırıyorum konu ile ilgili bir sonuca ulaşırsam buradan paylaşacağım.