Aracılığıyla paylaş


Genişletilmiş Olaylar Günlüğünde SQL Server Yerel İstemci Tanılama Bilgilerine Erişme

Şunlar için geçerlidir: Sql ServerAzure SQL VeritabanıAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Azure SQL Veritabanı

Önemli

SQL Server Native Client (SNAC) şu şekilde gönderilmez:

  • SQL Server 2022 (16.x) ve sonraki sürümleri
  • SQL Server Management Studio 19 ve sonraki sürümleri

YENI uygulama geliştirme için SQL Server Yerel İstemcisi (SQLNCLI veya SQLNCLI11) ve SQL Server için eski Microsoft OLE DB Sağlayıcısı (SQLOLEDB) önerilmez.

Yeni projeler için aşağıdaki sürücülerden birini kullanın:

  • SQL Server için Microsoft ODBC Sürücüsünü
  • SQL Server için Microsoft OLE DB Sürücüsünü

SQL Server Veritabanı Altyapısı'nın (sürüm 2012 ile 2019 arasında) bir bileşeni olarak gelen SQLNCLI için, Destek Yaşam Döngüsü özel durumukonusuna bakın.

SQL Server 2012'den (11.x) başlayarak, SQL Server Yerel İstemcisi ve veri erişim izlemesi (Veri Erişim İzleme) bağlantı halkası arabelleğinden bağlantı hataları ve genişletilmiş olay günlüğünden uygulama performansı bilgilerini almayı kolaylaştırmak için güncelleştirildi.

Genişletilmiş olay günlüğünü okuma hakkında bilgi için bkz. Olay Oturumu Verilerini Görüntüleme.

Not

Bu özellik yalnızca sorun giderme ve tanılama amacıyla tasarlanmıştır ve denetim veya güvenlik amacıyla uygun olmayabilir.

Açıklamalar

Bağlantı işlemleri için SQL Server Yerel İstemcisi bir istemci bağlantı kimliği gönderir. Bağlantı başarısız olursa bağlantı halkası arabelleğine erişebilir (Bağlantı Halkası Arabelleğiile SQL Server 2008'de bağlantı sorunlarını giderme) ve ClientConnectionID alanını bulabilir ve bağlantı hatası hakkında tanılama bilgileri alabilirsiniz. İstemci bağlantı kimlikleri yalnızca bir hata oluştuğunda kademe arabelleğine kaydedilir. (Ön oturum açma paketini göndermeden önce bağlantı başarısız olursa, istemci bağlantı kimliği oluşturulmaz.) İstemci bağlantı kimliği 16 baytlık bir GUID'dir. client_connection_id eylemi genişletilmiş olaylar oturumundaki olaylara eklenirse, istemci bağlantı kimliğini genişletilmiş olaylar çıkış hedefinde de bulabilirsiniz. Veri erişimi izlemeyi etkinleştirebilir ve bağlantı komutunu yeniden çalıştırabilir ve başarısız bir işlem için veri erişim izlemesindeki clientconnectionID alanını gözlemleyebilirsiniz( daha fazla tanılama yardımı gerekiyorsa).

SQL Server Yerel İstemcisi'nde ODBC kullanıyorsanız ve bağlantı başarılı olursa, SQLGetConnectAttrile SQL_COPT_SS_CLIENT_CONNECTION_ID özniteliğini kullanarak istemci bağlantı kimliğini alabilirsiniz.

SQL Server Yerel İstemcisi de iş parçacığına özgü etkinlik kimliği gönderir. Oturumlar TRACK_CAUSALITY seçeneği etkin olarak başlatılırsa, etkinlik kimliği genişletilmiş olaylar oturumlarında yakalanır. Etkin bağlantıyla ilgili performans sorunları için, istemcinin veri erişim izlemesinden (ActivityID alanı) etkinlik kimliğini alabilir ve ardından genişletilmiş olaylar çıkışında etkinlik kimliğini bulabilirsiniz. Genişletilmiş olaylardaki etkinlik kimliği, dört baytlık bir sıra numarasıyla eklenen 16 baytlık GUID'dir (istemci bağlantı kimliği için GUID ile aynı değildir). Sıra numarası, bir iş parçacığı içindeki isteğin sırasını temsil eder ve iş parçacığı için toplu iş ve RPC deyimlerinin göreli sıralamasını gösterir. ActivityID isteğe bağlı olarak veri erişim izleme etkinleştirildiğinde ve veri erişim izleme yapılandırma sözcüğündeki 18. bit AÇILDIysa SQL toplu iş deyimleri ve RPC istekleri için gönderilir.

Aşağıda, bir kademe arabelleğinde depolanacak genişletilmiş olaylar oturumu başlatmak için Transact-SQL kullanan ve RPC ve toplu işlemlerde istemciden gönderilen etkinlik kimliğini kaydeden bir örnek verilmiştir.

create event session MySession on server   
add event connectivity_ring_buffer_recorded,   
add event sql_statement_starting (action (client_connection_id)),   
add event sql_statement_completed (action (client_connection_id)),   
add event rpc_starting (action (client_connection_id)),   
add event rpc_completed (action (client_connection_id))  
add target ring_buffer with (track_causality=on)  
  

Denetim Dosyası

SQL Server 2012'de (11.x), SQL Server Yerel İstemci denetim dosyasının (ctrl.guid.snac11) içeriği şöyledir:

{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}  0x00000000  0   MSDADIAG.ETW  
{2DA81B52-908E-7DB6-EF81-76856BB47C4F}  0xFFFFFFFF  0   SQLNCLI11.1  

MOF Dosyası

SQL Server 2012'de (11.x), SQL Server Yerel İstemci mof dosyasının içeriği şöyledir:

#pragma classflags("forceupdate")  
#pragma namespace ("\\\\.\\Root\\WMI")  
  
/////////////////////////////////////////////////////////////////////////////  
//  
//  MSDADIAG.ETW  
  
[  
 dynamic: ToInstance,  
 Description("MSDADIAG.ETW"),  
 Guid("{8B98D3F2-3CC6-0B9C-6651-9649CCE5C752}"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_MSDADIAG_ETW : EventTrace  
{  
};  
  
[  
 dynamic: ToInstance,  
 Description("MSDADIAG.ETW"),  
 Guid("{8B98D3F3-3CC6-0B9C-6651-9649CCE5C752}"),  
 DisplayName("msdadiag"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_MSDADIAG_ETW_Trace : Bid2Etw_MSDADIAG_ETW  
{  
};  
  
[  
 dynamic: ToInstance,  
 Description("MSDADIAG.ETW formatted output (A)"),  
 EventType(17),  
 EventTypeName("TextA"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_MSDADIAG_ETW_Trace_TextA : Bid2Etw_MSDADIAG_ETW_Trace  
{  
    [  
     WmiDataId(1),  
     Description("Module ID"),  
     read  
    ]  
    uint32 ModID;  
  
    [  
     WmiDataId(2),  
     Description("Text StringA"),  
     extension("RString"),  
     read  
    ]  
    object msgStr;  
};  
  
[  
 dynamic: ToInstance,  
 Description("MSDADIAG.ETW formatted output (W)"),  
 EventType(18),  
 EventTypeName("TextW"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_MSDADIAG_ETW_Trace_TextW : Bid2Etw_MSDADIAG_ETW_Trace  
{  
    [  
     WmiDataId(1),  
     Description("Module ID"),  
     read  
    ]  
    uint32 ModID;  
  
    [  
     WmiDataId(2),  
     Description("Text StringW"),  
     extension("RWString"),  
     read  
    ]  
    object msgStr;  
};  
  
/////////////////////////////////////////////////////////////////////////////  
//  
//  SQLNCLI11.1  
  
[  
 dynamic: ToInstance,  
 Description("SQLNCLI11.1"),  
 Guid("{2DA81B52-908E-7DB6-EF81-76856BB47C4F}"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_SQLNCLI11_1 : EventTrace  
{  
};  
  
[  
 dynamic: ToInstance,  
 Description("SQLNCLI11.1"),  
 Guid("{2DA81B53-908E-7DB6-EF81-76856BB47C4F}"),  
 DisplayName("SQLNCLI11.1"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_SQLNCLI11_1_Trace : Bid2Etw_SQLNCLI11_1  
{  
};  
  
[  
 dynamic: ToInstance,  
 Description("SQLNCLI11.1 formatted output (A)"),  
 EventType(17),  
 EventTypeName("TextA"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_SQLNCLI11_1_Trace_TextA : Bid2Etw_SQLNCLI11_1_Trace  
{  
    [  
     WmiDataId(1),  
     Description("Module ID"),  
     read  
    ]  
    uint32 ModID;  
  
    [  
     WmiDataId(2),  
     Description("Text StringA"),  
     extension("RString"),  
     read  
    ]  
    object msgStr;  
};  
  
[  
 dynamic: ToInstance,  
 Description("SQLNCLI11.1 formatted output (W)"),  
 EventType(18),  
 EventTypeName("TextW"),  
 locale("MS\\0x409")  
]  
class Bid2Etw_SQLNCLI11_1_Trace_TextW : Bid2Etw_SQLNCLI11_1_Trace  
{  
    [  
     WmiDataId(1),  
     Description("Module ID"),  
     read  
    ]  
    uint32 ModID;  
  
    [  
     WmiDataId(2),  
     Description("Text StringW"),  
     extension("RWString"),  
     read  
    ]  
    object msgStr;  
};  

Ayrıca Bkz.

Hataları ve İletileri İşleme