Uygulamalar iletilerini ve hataları işleme

Hataları tarafından harekete geçirilen SQL Server Veritabanı Altyapısı veya RAISERROR deyim parçası olmayan bir sonuç küme.Sonuç kümeleri işlenmesini ayrı bir hata işleme mekanizması aracılığıyla, uygulamalar için hata döndürülmez.

Her veritabanı uygulama programı arabirim (API) işlevleri, arabirimleri, yöntemleri, nesneleri veya hataları ve iletileri yoluyla döndürmeleri yapıları küme vardır.Genellikle her API işlev veya yöntem, işlemin başarısı gösteren bir durum kodu döndürür.Uygulama durumu dışında bir başarı, hata İşlevler, yöntemler veya nesneler hata bilgilerini almak için çağırabilir.

The Veritabanı Altyapısı can return information to the caller in one of two ways:

  1. Hataları

    • Hatalardan sys.messages 11 veya daha yüksek önem derecesi.

    • Herhangi RAISERROR deyim 11 veya daha yüksek önem derecesi.

  2. İletileri

    • PRINT deyim çıktı.

    • Birkaç dbcc deyimleri çıktı.

    • Hatalardan sys.messages 10 veya daha düşük bir önem derecesi.

    • Herhangi RAISERROR deyim ile bir önem 10 veya daha düşük.

ActiveX Data Object (ado) ve ole db gibi API'leri kullanan uygulamalar genellikle hataları ve iletileri arasında ayrım yapamaz.Açık veritabanı bağlantısı (odbc) uygulamaları, iletiler SQL_SUCCESS_WITH_INFO işlev dönüş kodu üretir ve hataları genellikle bir dönüş SQL_ERROR hatası kodu oluşturmak.Fark en db-Library, hatalar için uygulama hata işleyicisi işlev döndürülür ve uygulama ileti işleyicisi işlev için döndürülen iletileri olarak telafuz.Benzer şekilde, SqlClient sağlayıcı kullanırken, atılan için SqlException özel durum hataları neden; İletilerin denetim akışı değiştir ve InfoMessage olay işleyicisi için bir geri arama yaptırarak uygulama kodu geçirilebilir.

Diğer bileşenler de hataları yükseltebilirsiniz:

  • ole db için SQL Server sağlayıcı ve SQL Server odbc sürücü hataları, kendi raise.Bu hataların API belirtimlerinde tanımlanmış biçimleri ile tutarlı biçimidir.

  • Ağ kitaplıkları hataları kendi yükseltin.

  • Genişletilmiş saklı yordam API hataları kendi biçiminde yükseltir.

  • The SQL Server wizards, applications, and utilities such as, the SQL Server Management Studio and the sqlcmd utility, can raise their own errors.

Bu bileşenler hatalardan çağıran uygulama temel mekanizma olarak hatalarını kullanılarak gönderilir Veritabanı Altyapısı.Bir uygulama için kullanılan aynı hata işleme mantığı kullanarak bu hataları işleme Veritabanı Altyapısı hataları.Bu hatalar dışında üretilir, çünkü Veritabanı Altyapısı, bunlar olamaz işleme Transact-SQL try…catch yapıları.Daha fazla bilgi için bkz: TRY...CATCH (Transact-SQL).

odbc hata işleme

Genel veritabanı ado ve ole db gibi API Hatası modellerin temeli olarak sunulan bir hata modeli odbc belirtimi ile kullanılmaya başlanan ve odbc API yerleşik — rdo, veri erişim nesnesi (dao) ve Microsoft Foundation Classes (mfc) veritabanı sınıfları.Bunun için de geçerlidir SQL Server yerel istemci odbc sürücüsü.odbc modelinde, hataları aşağıdaki özniteliklere sahip:

  • SQLSTATE

    sqlstate, ilk olarak odbc belirtiminde tanımlanmış beş karakterlik hata kodudur.sqlstate kodları odbc sürücülerinin tümü yaygın olarak bulunur ve uygulamalar da çeşitli veritabanları tarafından döndürülen farklı hata kodlarının tümü için sınama yapılmadan kodu temel hata işleme için bir yol sağlar.odbc sqlstate durumu öznitelik ile ilgisi olan Veritabanı Altyapısı hata iletileri.

    odbc 2.x sqlstate kodları ve odbc 3 küme döndürür.x açık grup veri yönetimi ile hizalı sqlstate kodları küme döndürür: Yapılandırılmış sorgu dili (sql), sürüm 2 standart.Çünkü odbc sürücülerinin tümü sqlstate kodu, alma uygulamaları aynı kümesi geri kendi hata işleme kodları sqlstate üzerinde daha kolay taşınabilir.

  • Hata numarası

    Hata numarası alttaki veritabanından hata numarasıdır.odbc uygulamaları almak Veritabanı Altyapısı hata numaraları olarak yerel hata numaraları.

  • Hata iletisi dize

    Hata iletisi dize parametresinde hata iletisi döndürülür.

odbc zaman işlev sql_success dışında durum döndürür, uygulama çağırabilir SQLGetDiagRec hata bilgileri alınamıyor.Örneğin, bir odbc uygulaması bir sözdizimi hatası alır, (SQL Server Hata numarası: 170), SQLGetDiagRec aşağıdaki döndürür.

szSqlState = 42000, pfNative = 170
szErrorMsg =
'[Microsoft][ODBC SQL Server Driver][SQL Server]
                                     Line 1: Incorrect syntax near *'

odbc SQLGetDiagField işlev sürücüsü tarafından döndürülen tanılama kayıtları sürücüye özgü tanı alanları belirtmek odbc sürücüleri sağlar.The SQL Server ODBC driver specifies driver-specific fields to hold Veritabanı Altyapısı error information, such as the Veritabanı Altyapısı severity and state codes.

odbc uygulamalarda hata iletileri alma hakkında daha fazla bilgi için bkz: Hataları ve iletileri işleme.

ado hata işleme

ado hataları ve hataların nesneyi kullanır koleksiyon sqlstate, yerel hata numarasını ve hata iletisini dize gibi standart hata bilgilerini dönmek için.Bu odbc karşılıkları aynıdır.ado desteklemiyor herhangi sağlayıcı-özel hata arabirimler; Veritabanı Altyapısı-önem derecesi veya durumu gibi belirli hata bilgilerini ado uygulamaları için kullanılabilir değil.

ado uygulamalarda hata iletileri alma hakkında daha fazla bilgi için bkz: Hataları ve iletileri işleme.

ole db hata işleme

ole db kullanır IErrorInfo hata sqlstate ve hata numarası gibi standart hata bilgilerini dönmek için arabirim dize.Bu odbc karşılıkları aynıdır.ole db Provider for SQL Server tanımlayan bir ISQLServerErrorInfo dönmek için arabirim Veritabanı Altyapısı-önem derecesi, durumu, yordam adı ve satır numarası. gibi belirli bilgileri

ole db uygulamalarda hata iletileri alma hakkında daha fazla bilgi için bkz: Hataları.

SqlClient Hatasını İşlemede

SqlClient yönetilen sağlayıcı tarafından işlenmeyen bir hata yükseltildiğinde SqlException özel durum oluşturduğunda SQL Server Veritabanı Altyapısı.SqlException sınıfı aracılığıyla uygulamaları hata numarası, hata iletisi, hata önem ve diğer özel bilgileri de dahil olmak üzere sunucu tarafında üretilen hataları hakkında bilgi alabilirsiniz.

Uyarıların veya bilgi iletilerinin gönderilip işlemek için SQL Server Veritabanı Altyapısı, uygulamalarda SqlConnection tanýmýna InfoMessage olay dinlemek için bir SqlInfoMessageEventHandler temsilci oluşturabilirsinizBenzer biçimde, özel durum böyle, ileti önem ve durumu gibi bilgileri geçirilen bağımsız değişken olarak geri arama için.