Tanılama kayıtlar ve alanlar
odbc ortam, bağlantı, deyim veya tanımlayıcı tanıtıcı ile ilgili tanı kayıtlardır.Bir dönüş kodu sql_success veya SQL_INVALID_HANDLE dışında herhangi bir odbc işlevini harekete geçiren, işlev tarafından çağrılan tanıtıcı bilgi içeren tanılama kayıtlar veya hata iletileri ile birleştirilmiştir.Bu kayıtlar, o tutamacını kullanarak başka bir işlev çağrılır kadar korunur saat atılır.Herhangi bir ile bir tutamaç ilişkilendirilebilir tanılama kayıt sayısı için bir sınır yoktur saat.
Tanılama kayıtları iki tür vardır: Başlık ve durum.Üstbilgi kaydı kayıt: 0 olur; Durum kayıt olduğunda, bunlar 1 ve sonrasında kayıtlarıdır.Tanılama kayıtları farklı alanlar için üstbilgi kaydı ve durum kayıtları içerir.odbc bileşenleri kendi tanılama kayıt alanları da tanımlayabilirsiniz.
Başlık kaydındaki alanları hakkında genel bilgiler içeren bir işlevın dönüş kodu, satır sayısı, durumu kayıt sayısını ve deyim türü de dahil olmak üzere, yürütme yürütülen.Üstbilgi kaydının sürece her zaman oluşturulan bir odbc işlev SQL_INVALID_HANDLE verir.Başlık kaydındaki alanları tam listesi için bkz: SQLGetDiagField.
Durum kayıtlarında alanları belirli hataları veya uyarıları sqlstate hata numarası, tanılama iletisini, sütun sayısı ve satır sayısı da dahil olmak üzere odbc Sürücü Yöneticisi, sürücü veya veri kaynak tarafından döndürülen bilgileri içerir.Yalnızca SQL_ERROR hatası, SQL_SUCCESS_WITH_INFO sql_no_data sql_need_data veya SQL_STILL_EXECUTING işlev # sayı durum kaydı oluşturulur.Alanları durum kayıtlarında tam listesi için bkz: SQLGetDiagField.
SQLGetDiagRec , odbc sqlstate, hata numarası ve tanılama iletisini alanları ile birlikte tek bir tanılama kaydı alır.This functionality is similar to the ODBC 2.xSQLError function.En basit hata işleme işlev odbc 3.x tekrar tekrar aramak için ise SQLGetDiagRec ile başlayan RecNumber parametresi küme 1 ve artan RecNumber kadar 1 SQLGetDiagRec sql_no_data döndürür.Bu odbc 2'ye eşdeğerdir.x uygulama arama SQLError kadar sql_no_data_found döndürür.
odbc 3.x odbc 2'den çok daha fazla tanı bilgilerini destekler.x.Bu bilgileri kullanarak alınan tanılama kayıt ek alanlara depolanır SQLGetDiagField.
The SQL Server Native Client ODBC driver has driver-specific diagnostic fields that can be retrieved with SQLGetDiagField.Bu sürücüye özgü alanlar için etiketleri sqlncli.h içinde tanımlanır.Almak için bu etiketleri kullanmak SQL Server durumu, önem düzey, sunucu adı, yordam adı ve her tanılama kaydı. ile ilişkili satır numarasıAyrıca, sqlncli.h sürücüsünü kullanan bir uygulama çağırırsa Transact-sql deyimlerinin tanımlamak için kodları tanımları içeren SQLGetDiagField ile DiagIdentifier küme SQL_DIAG_DYNAMIC_FUNCTION_CODE için.
SQLGetDiagField odbc sürücüsü hata bilgileri temel sürücüsünden önbelleğe kullanarak Yöneticisi tarafından işlenir.Başarılı bir bağlantı yapıldıktan sonra odbc Sürücü Yöneticisi sürücüye özgü tanı alanlar kadar önbelleğe almaz.SQLGetDiagField başarılı bir bağlantı tamamlanmadan önce sürücüye özgü tanı alanları almak için çağrılırsa SQL_ERROR hatası döndürür.Bir odbc bağlantı işlev SQL_SUCCESS_WITH_INFO döndürür, sürücüye özgü alanları connect işlev için henüz kullanılabilir değil.Çağrı başlatma SQLGetDiagField başka bir odbc yaptıktan sonra sürücüye özgü tanı alanlar için işlev çağrısında sonra connect işlevi.
Rapor eden çoğu hataları SQL Server Tanı yerel istemci odbc sürücüsü etkili bir şekilde koydu kullanarak yalnızca bilgileri tarafından döndürülen SQLGetDiagRec.Bazı durumlarda, ancak, sürücüye özgü tanı alanlar tarafından döndürülen bilgiler hata tanılamada önemlidir.Bir odbc hata işleyicisi kullanarak uygulamaları için kodlama yaparken SQL Server yerel istemci odbc sürücüsü olarak da kullanmak iyi bir fikir SQLGetDiagField az SQL_DIAG_SS_MSGSTATE ve SQL_DIAG_SS_SEVERITY sürücüye özgü alanları almak için.Çeşitli yerlerde belirli bir hata yükseltilmiş, SQL Server SQL_DIAG_SS_MSGSTATE kodunu gösterir için bir Microsoft destek mühendisi tarafından özellikle burada hataya neden oldu, bazen, yardımcı, tanılama sorunu.