Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric
Ambarı'nda SQL analiz uç noktası
TRY'nin CATCH blokuna neden olan hatanın durum numarasını döndürür... CATCH yapımı çalıştırılacak.
Transact-SQL söz dizimi kuralları
Syntax
ERROR_STATE ( )
Dönüş Türleri
int
Dönüş Değeri
Bir CATCH bloğunda çağrıldığında, CATCH bloğunun çalıştırılmasına neden olan hata mesajının durum numarasını döndürür.
CATCH bloğunun kapsamı dışında çağrılırsa NULL döner.
Remarks
Microsoft SQL Server Database Engine kodunda bazı hata mesajları birden fazla noktada yükseltilebilir. Örneğin, birkaç farklı koşul için "1105" hatası oluşturulabilir. Hatayı ortaya çıkaran her özel koşul benzersiz bir durum kodu atar.
Microsoft Bilgi Bankası gibi bilinen sorunların veritabanlarını incelerken, kayıtlı sorunun karşılaştığınız hata ile aynı olup olmadığını belirlemek için durum numarasını kullanabilirsin. Örneğin, bir Bilgi Tabanı makalesi 1105 hata mesajını 2 durumu ile tartışıyorsa ve aldığınız 1105 hata mesajı 3 durumundaysa, hatanızın nedeni muhtemelen makalede bildirilenden farklıdır.
Bir SQL Server destek mühendisi, hata durumundan alınan durum kodunu kullanarak kaynak kodda hatanın kaynağı konumunu bulabilir; bu da sorunun teşhisi için ek fikirler sağlayabilir.
ERROR_STATE bir CATCH blokunun kapsamı içinde herhangi bir yerde çağrılabilir.
ERROR_STATE, hata durumunu kaç kez çalıştırılırsa çalıştırsın veya CATCH bloğunun kapsamında nerede çalıştırılırsa çalıştırsın döndürür. Bu, @@ERROR gibi fonksiyonların aksine, sadece hata yapan ifadedeki hata sayısını hemen ardından döndüren veya CATCH bloğunun ilk ifadesindeki hata sayısını döndürür.
İçiçe CATCH bloklarında, ERROR_STATE, referans bulunduğu CATCH bloğunun kapsamına özgü hata durumunu döndürür. Örneğin, dış TRY'nin CATCH bloğu... CATCH yapısı iç içe bir TRY... CATCH yapı. İç içe CATCH bloğu içinde, ERROR_STATE iç içe CATCH bloğunu çağıran hatadan gelen durumu döndürür. Eğer ERROR_STATE dış CATCH blokunda çalıştırılırsa, o CATCH bloğunu çağıran hatadan gelen durumu döndürür.
Examples
A. CATCH blokunda ERROR_STATE kullanmak
Aşağıdaki örnekte sıfıra bölme hatası oluşturan bir deyim gösterilmektedir SELECT . Hata durumu döner.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
B. ERROR_STATE'yi CATCH blokunda diğer hata işleme araçlarıyla kullanmak
Aşağıdaki örnekte sıfıra bölme hatası oluşturan bir deyim gösterilmektedir SELECT . Hata durumu ile birlikte hatayla ilgili bilgiler de döner.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Örnekler: Azure Synapse Analytics ve Analiz Platformu Sistemi (PDW)
C. ERROR_STATE'yi CATCH blokunda diğer hata işleme araçlarıyla kullanmak
Aşağıdaki örnekte sıfıra bölme hatası oluşturan bir deyim gösterilmektedir SELECT . Hata durumu ile birlikte hatayla ilgili bilgiler de döner.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
İlgili içerik
- Hatalar için mesajlar katalog görünümleri - sys.messages
- DENEYIN... CATCH (Transact-SQL)
- ERROR_LINE (Transact-SQL)
- ERROR_MESSAGE (Transact-SQL)
- ERROR_NUMBER (Transact-SQL)
- ERROR_PROCEDURE (Transact-SQL)
- HATA_AĞIRLIK_DÜZEYİ (Transact-SQL)
- RAISERROR (Transact-SQL)
- @@ERROR (Transact-SQL)
- Hatalar ve olaylar başvurusu (Veritabanı Altyapısı)