Aracılığıyla paylaş


sp_server_diagnostics (Transact-sql)

Hakkında tanılama verileri ve sistem durumu bilgilerini yakalar potansiyel başarısızlıkları algılamak üzere SQL Server. Prosedür tekrar modda çalıştırır ve sonuçları düzenli olarak gönderir. Düzenli veya dac bağlantı çağrılabilir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sp_server_diagnostics [@repeat_interval =] 'repeat_interval_in_seconds' 

Bağımsız değişkenler

  • @ repeat_interval =] 'repeat_interval_in_seconds'
    Hangi saklı yordamı sürekli sağlık bilgi göndermek için çalışır zaman aralığını gösterir.

    repeat_interval_in_secondsise intvarsayılan olarak 0. Geçerli parametre değerleri 0, veya herhangi bir değere eşit ya da fazla 5 vardır. Tam veri döndürmek için en az 5 saniye çalıştırmak saklı yordam vardır. Yineleme modunda çalıştırmak bir saklı yordam için en düşük değer 5 saniyedir.

    Bu parametre belirtilmezse, ya da belirtilen değer 0 ise, saklı yordam veri bir zaman ve çıkın dönecektir.

    Belirtilen değeri en küçük değerden daha küçük ise, bir hata yükseltmek ve hiçbir şey dönmek.

    Belirtilen değere eşit ya da fazla 5 ise, saklı yordam bunu el ile iptal kadar sağlık durumuna dönmek için tekrar tekrar çalıştırır.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (hata)

Sonuç Kümeleri

sp_server_diagnostics bilgisini döndürür

Sütun

Veri türü

Açıklama

creation_time

Datetime

Satır oluşturma zaman damgası gösterir. Her satır tek bir satır kümesi aynı zaman damgası vardır.

bileşeni

Varchar(20)

Bileşenin adını gösterir:

  • sistem

  • kaynak

  • query_processing

  • io_subsystem

  • olaylar

Devlet

Int

Bileşen sağlık durumunu gösterir:

  • 0

  • 1

  • 2

  • 3

State_desc

Varchar(20)

Durum sütunu tanımlar. Durum sütunundaki değerler karşılık gelen açıklamaları şunlardır:

  • 0:Unknown

  • 1: temiz

  • 2:Warning

  • 3:error

veri

Varchar (max)

Bileşene özgü verileri belirtir.

Beş bileşenleri açıklamaları şunlardır:

  • Sistem: topladığı verileri bir sistem açısından spinlocks, şiddetli işleme koşulları, verimli olmayan görevler, sayfa hataları ve cpu kullanımı. Bu bilgiler ise üreten bir genel sağlık durumu tavsiye.

  • Kaynak: fiziksel ve sanal bellek arabellek havuzu sayfa, önbellek ve diğer bellek nesneleri üzerinde bir kaynak açısından topladığı verileri. Bu bilgiler, bir genel sağlık durumu öneri oluşturur.

  • query_processing: topladığı verileri bir sorgu işleme açısından üzerinde çalışan iş parçacıkları, görevleri, türleri, cpu yoğun oturumları ve engelleme görevleri bekleyin. Bu bilgiler, bir genel sağlık durumu öneri oluşturur.

  • io_subsystem: IO üzerinde veri toplar. Tanılama verileri ek olarak, bu bileşen bir temiz sağlıklı veya uyarı sağlık durumu yalnızca bir g/Ç alt üretir.

  • olaylar: topladığı verileri ve yüzey hataları ve olayları halka arabelleği istisnalar ile ilgili ayrıntıları da dahil olmak üzere sunucu tarafından kaydedilen ilgi saklı yordam aracılığıyla halka arabelleği olaylar hakkında dışarı-in bellek, Planlayıcı izleyici, arabellek havuzu, spinlocks, güvenlik ve bağlantı bellek ayırıcı. Olaylar her zaman 0 durumu gösterir.

Açıklamalar

Hata durumunda perspektif, sistem, kaynak ve query_processing bileşenleri hata algılama için io_subsystem ve olay bileşenleri yalnızca tanılama amacıyla kullanılacak olabilir süre kaldıraçlı.

Aşağıdaki tabloda, ilişkili sağlık durumlarına bileşenleri eşleştirir.

Bileşenler

(1) Temiz

Uyarı (2)

Hata (3)

Bilinmeyenler (0)

sistem

x

x

x

kaynak

x

x

x

query_processing

x

x

x

io_subsystem

x

x

olaylar

x

Her satır (x) bileşeni için geçerli sağlık durumlarını gösterir. Örneğin, io_subsystem ya da Haritayı temiz ya da uyarı olacaktır. Hata durumları göstermez.

İzinler

Sunucu üzerindeki VIEW server state izni gerektirir.

Örnekler

Sağlık bilgileri yakalamak ve SQL Server dışında bulunan bir dosyaya kaydetmek için genişletilmiş oturumlar kullanmak iyi bir uygulamadır. Bu nedenle, bir hata ise hala erişebilirsiniz. Aşağıdaki örnek çıkış bir olay oturumu bir dosyaya kaydeder:

CREATE EVENT SESSION [diag]
ON SERVER
           ADD EVENT [sp_server_diagnostics_component_result] (set collect_data=1)
           ADD TARGET [asynchronous_file_target] (set filename='c:\temp\diag.xel')
GO
ALTER EVENT SESSION [diag]
      ON SERVER STATE = start
GO

CREATE EVENT SESSION [diag]
ON SERVER
           ADD EVENT [sp_server_diagnostics_component_result] (set collect_data=1)
           ADD TARGET [asynchronous_file_target] (set filename='c:\temp\diag.xel')
GO
ALTER EVENT SESSION [diag]
      ON SERVER STATE = start
GO

Aşağıdaki örnek sorgu, genişletilmiş oturumu günlük dosyasını okur:

SELECT
    xml_data.value('(/event/@name)[1]','varchar(max)') AS Name
  , xml_data.value('(/event/@package)[1]', 'varchar(max)') AS Package
  , xml_data.value('(/event/@timestamp)[1]', 'datetime') AS 'Time'
  , xml_data.value('(/event/data[@name=''component'']/value)[1]','varchar(max)') AS Component
  , xml_data.value('(/event/data[@name=''state'']/value)[1]','int') AS State
  , xml_data.value('(/event/data[@name=''state_desc'']/value)[1]','varchar(max)') AS State_desc
  , xml_data.query('(/event/data[@name="data"]/value/*)') AS Data
FROM 
(
      SELECT
                        object_name as event
                        ,CONVERT(xml, event_data) as xml_data
       FROM  
      sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\*.xel', NULL, NULL, NULL)
) 
AS XEventData
ORDER BY time

SELECT
    xml_data.value('(/event/@name)[1]','varchar(max)') AS Name
  , xml_data.value('(/event/@package)[1]', 'varchar(max)') AS Package
  , xml_data.value('(/event/@timestamp)[1]', 'datetime') AS 'Time'
  , xml_data.value('(/event/data[@name=''component'']/value)[1]','varchar(max)') AS Component
  , xml_data.value('(/event/data[@name=''state'']/value)[1]','int') AS State
  , xml_data.value('(/event/data[@name=''state_desc'']/value)[1]','varchar(max)') AS State_desc
  , xml_data.query('(/event/data[@name="data"]/value/*)') AS Data
FROM 
(
      SELECT
                        object_name as event
                        ,CONVERT(xml, event_data) as xml_data
       FROM  
      sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\*.xel', NULL, NULL, NULL)
) 
AS XEventData
ORDER BY time

Aşağıdaki örnek sp_server_diagnostics Tablo tekrarı olmayan modda çıktısını yakalar:

CREATE TABLE SpServerDiagnosticsResult
(
      create_time DateTime,
      component_name nvarchar(20),
      state int,
      state_desc nvarchar(20),
      data nvarchar(max)
)
INSERT INTO SpServerDiagnosticsResult 
EXEC sp_server_diagnostics

CREATE TABLE SpServerDiagnosticsResult
(
      create_time DateTime,
      component_name nvarchar(20),
      state int,
      state_desc nvarchar(20),
      data nvarchar(max)
)
INSERT INTO SpServerDiagnosticsResult 
EXEC sp_server_diagnostics

Ayrıca bkz.

Kavramlar

Yük devretme ilkesi için yerine çalışma küme örneklerini