Aracılığıyla paylaş


Uygulama iletilerini ve hataları işlemeyi

Hataları tarafından geçirilen SQL Server Database Engine veya RAISERROR deyim bir sonuç parçası küme. Hataları, sonuç kümesi'nin işlenmesi gelen ayrı bir hata işleme mekanizmasını kullanarak uygulamaları döndürülür.

Her veritabanı uygulaması programlama arabirim (API) işlevleri, arabirimleri, yöntemleri, nesneleri veya hatalar ve iletilerin üzerinden döndürmeleri yapıları kümesine sahiptir.Genellikle, her bir API işlev veya yöntem bu işlev başarılı olarak gösteren bir durum kodu döndürür.Durum dışında başarılı ise, uygulama hata işlevleri, yöntemleri ve hata bilgilerini almak için nesneleri çağırabilirsiniz.

The Database Engine can return information to the caller in one of two ways:

  1. Hataları

    • Gelen hatalar sys.Messages ile 11 veya daha yüksek önem derecesi.

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

  2. Iletileri

    • PRINT deyiminin çıktı.

    • Birkaç DBCC ekstrelerinin çıktı.

    • Gelen hatalar sys.Messages 10 veya daha düşük bir önem derecesi ile.

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

ActiveX veri nesnesi (ADO) ve OLE DB gibi Apı'leri kullanan uygulamalar genelde hata iletileri arasında ayrım yapamaz.Açık Veritabanı Bağlanılabilirliği (ODBC) uygulamaları, iletiler, SQL_SUCCESS_WITH_INFO işlevin dönüş kodu üretir ve hataları, genellikle bir SQL_ERROR dönüş kodu üret.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 iletilerin, telafuz.Benzer şekilde, SqlClient sağlayıcı kullanırken, atılan için ; SqlException durum hatalara neden iletileri denetim akışı değiştirme ve uygulama kodu tarafından bir geri arama ınfomessage olay işleyicisinin kaydederek geçirilebilir.

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

  • OLE DB'YE SQL Server Sağlayıcı ve SQL Server ODBC sürücü hataları kendi yükseltin. Bu hataların biçimi API belirtimlerini tanımlı biçimler tutarlıdır.

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

  • Genişletilmiş saklı yordamının API hata 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şenlerden hataları çağıran uygulama hatalarını aynı temel düzeneğini kullanarak gönderilir Database Engine. Bir uygulama için kullanılan aynı hata işleme mantığına kullanarak bu hataları işleme Database Engine hata. Bu hatalar, dışında geçirilen çünkü Database Engine, içinde işlenemiyor Transact-SQL TRY…CATCH oluşturur. Daha fazla bilgi için bkz:... CATCH (Transact-SQL) TRY.

ODBC hata işleme

ODBC belirtimi veri tabanının genel Apı, ADO ve OLE DB gibi hata modellerin temeli olarak sunulan bir hata modeli kullanılmaya başlandı ve içinde ODBC Apı'ler yerleşik — RDO, veri erişim nesnesi (DAO) ve Microsoft Temel sınıfları (MFC) veritabanı sınıfları. Bu da geçerlidir SQL Server Yerel istemci ODBC sürücüsü. Hata, ODBC modelinde, aşağıdaki özniteliklere sahiptir:

  • SQLSTATE

    SQLSTATE, ilk olarak ODBC belirtiminde tanımlanmış beş karakterlik hata kodudur.SQLSTATE kodları tüm ODBC sürücüleri arasında yaygın olarak bulunur ve uygulamalar için temel kod sağlar hata işleme farklı hata kodlarının tümü için sınama, çeşitli veritabanlarındaki tarafından döndürülen olmayan.ODBC SQLSTATE durum özniteliği ile ilgisi vardır. Database Engine Hata iletileri.

    odbc (2). x birini verir küme SQLSTATE kodları ve ODBC 3.x döndüren bir küme Open Group veri yönetimi hizalanmış SQLSTATE kodları: Yapılandırılmış sorgu dili (SQL), sürüm 2 standart. Tüm ODBC sürücüsü SQLSTATE kodları aynı kümeleri dönmek için SQLSTATE kodları, hata alma daha taşınabilir uygulamalardır.

  • Yerel hata sayısı

    Hata numarasını temel veritabanının yerel hata numarasıdır.ODBC uygulamaları alma Database Engine Yerel hata sayılar hata numaraları.

  • Hata iletisi dize

    Hata iletisinin Dize parametresi, hata iletisi döndürülür.

Bir ODBC işlevini SQL_SUCCESS dışındaki bir durumu geri döndüğünde, uygulamanın çağırabileceği SQLGetDiagRec hata bilgisi alınamadı.Örneğin, bir ODBC uygulaması alır, bir sözdizimi hatası (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, tanılama kayıtlarında sürücüsü tarafından döndürülen sürücüye özel tanılama alanları belirtmek, ODBC sürücüleri sağlar.The SQL Server ODBC driver specifies driver-specific fields to hold Database Engine error information, such as the Database Engine 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 bir hata nesnesi errors'koleksiyon SQLSTATE, özgün hata numarasını ve hata iletisi standart hata döndürmesini kullanır dize.Bu ODBC'dekiler gibi aynıdır.ADO, sağlayıcıya özgü hata hiçbir arabirim; desteklemiyor. Database Engine-önem veya durumu gibi belirli hata bilgilerini ADO uygulamalar için kullanılabilir durumda 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 arabirim standart hata bilgileri, SQLSTATE, özgün hata numarasını ve hata dizesi.Bu ODBC'dekiler gibi aynıdır.Ilgili OLE DB sağlayıcı SQL Server tanımlayan bir ISQLServerErrorInfo verilecek arabirimDatabase Engine-ayrıntılı bilgi için önem, durumu, yordam adını ve satır numarası.

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

SqlClient hata işleme

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

Uyarılar veya gönderilen bilgilendirme iletilerini işlemek için SQL Server Database Engine, uygulamalar SqlConnection sınıfı ınfomessage olayı dinlemek SqlInfoMessageEventHandler temsilci oluşturabilirsiniz. Benzer şekilde, özel durum, ileti bilgileri önem durumu gibi geçirilen bağımsız değişken olarak geri için.