Udostępnij za pośrednictwem


Diagnostyczne rekordy i pola

Diagnostyczne rekordy są ze sobą skojarzone środowiska ODBC, połączenia, instrukcja lub uchwyty deskryptora.Podczas każdej funkcja ODBC zgłasza kod zwrotny innych niż SQL_SUCCESS lub SQL_INVALID_HANDLE, uchwyt wywoływana przez funkcja skojarzył diagnostyczne rekordy, które zawierają informacyjnych lub komunikatów o błędach.Zapisy te są zachowywane aż do innej funkcji nazywa się przy użyciu tego dojścia, w którym czas one są odrzucane.Nie jest ograniczona do liczby rekordów diagnostyczne, które można skojarzyć z uchwytu w dowolnym momencie.

Istnieją dwa typy rekordów diagnostycznych: Nagłówek i stanu. Rekord nagłówka jest rekordu 0, jeśli istnieją rekordy stanu, są one rekordy 1 lub nowszym.Diagnostyczne rekordy zawierają różne pola rekordu nagłówka oraz rekordów stanu.Składniki ODBC może także definiować własne pola rekordu diagnostycznych.

Pola w rekordzie nagłówka zawierają ogólne informacje o wykonanie jego funkcja, takich jak kod zwrotny, liczba wierszy, liczbę rekordów, stan i typ instrukcja wykonywane.Zawsze jest tworzony rekord nagłówka, chyba że jest funkcja ODBC zwraca SQL_INVALID_HANDLE.Aby uzyskać pełną listę pól w rekordzie nagłówka zobacz SQLGetDiagField.

Pól w rekordach stan zawierają informacje na temat określonych błędów lub ostrzeżeń zwrócony przez urządzenie źródłowe Menedżera sterowników ODBC, sterownika lub danych, takich jak SQLSTATE, błąd macierzysty numer, komunikat diagnostyczny, numer kolumna i numer wiersza.Stan rekordy są tworzone tylko wtedy, gdy funkcja zwraca SQL_ERROR, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_NEED_DATA lub SQL_STILL_EXECUTING.Aby uzyskać pełną listę pól w rekordach stanu zobacz SQLGetDiagField.

SQLGetDiagRec pobiera pojedynczego rekordu diagnostyczne wraz z jego SQLSTATE ODBC, błąd macierzysty numer i pola komunikat diagnostyczny.This functionality is similar to the ODBC 2.xSQLError function.Najprostszy funkcja obsługi błędów w ODBC 3. x jest wielokrotnie wywoływać SQLGetDiagRec począwszy od RecNumber parametr zestaw 1 i zwiększanie RecNumber 1 do SQLGetDiagRec zwraca SQL_NO_DATA.Jest to równoważne ODBC 2. x Aplikacja wywoływaniaSQLError aż zwraca SQL_NO_DATA_FOUND.

ODBC 3. x obsługuje informacje diagnostyczne znacznie więcej niż ODBC 2.x.Te informacje są przechowywane w dodatkowych pól diagnostyczne rekordami pobranymi przy użyciu SQLGetDiagField.

The SQL Server Native klient ODBC driver has driver-specific diagnostic fields that can be retrieved with SQLGetDiagField.Etykiety te pola zależne od sterownika są definiowane w sqlncli.h.W celu pobrania można użyć tych etykiet SQL Server Stan, poziom ważności, nazwa serwera, nazwa procedury i skojarzonych z każdym rekordzie diagnostyczne numer wiersza. Ponadto sqlncli.h zawiera definicje kodów sterownik używa do identyfikowania instrukcji języka Transact-SQL, jeśli aplikacja wywoła SQLGetDiagField with DiagIdentifier ustawić SQL_DIAG_DYNAMIC_FUNCTION_CODE.

SQLGetDiagField jest przetwarzany przez menedżera sterownika ODBC za pomocą informacji o błędach buforuje go z odpowiedniego sterownika.Menedżer sterownika ODBC nie buforuje specyficzne dla sterownika diagnostyczne pól do, po ustanowieniu połączenia powiodła się.SQLGetDiagField zwraca SQL_ERROR, jeśli jest on nazywany uzyskanie pól diagnostyczne specyficzne dla sterownika przed zakończeniem połączenia powiodła się.Jeśli funkcja połączenia ODBC zwraca SQL_SUCCESS_WITH_INFO, pola diagnostyczne specyficzne dla sterownika dla funkcja połączenia nie są jeszcze dostępne.Można rozpocząć wywoływanie SQLGetDiagField dla pól diagnostyczne specyficzne dla sterownika tylko wtedy, gdy wprowadzone ODBC innej funkcja połączenia po funkcja połączenia.

Większość błędów zgłaszanych przez SQL Server Macierzysty sterownik ODBC klient może być skutecznie zdiagnozowana przy użyciu informacji zwracanych przez SQLGetDiagRec.W niektórych przypadkach jednak informacje zwrócone za pomocą pól diagnostyczne specyficzne dla sterownika jest ważne w diagnozowaniu błąd.Gdy moduł ODBC obsługi błędów aplikacji przy użyciu kodowania SQL Server Macierzysty sterownik ODBC klient, jest dobrze jest też użyć SQLGetDiagField pobrać przynajmniej w polach SQL_DIAG_SS_MSGSTATE i SQL_DIAG_SS_SEVERITY specyficzne dla sterownika.Jeśli określonego błędu można podnieść w kilku lokalizacjach w SQL Server kod, SQL_DIAG_SS_MSGSTATE wskazuje do pracownika pomocy technicznej firmy Microsoft, w szczególności w przypadku gdy błąd podniesiono, które czasami ułatwia diagnozowanie problemu.