OLE Otomasyonu sistem saklı yordamlarını kullandığınızda döndürülen hatalarla ilgili ek bilgilere erişme

Özet

OLE Otomasyonu saklı yordamları, düzgün çalışması için çağırmak istedikleri nesnelere sınırsız erişime ihtiyaç duyar. Genellikle, hedef nesneyle ilgili çözümlenmemiş sorunlar çıktığında aşağıdaki hatalar görülebilir:

Microsoft [ODBC SQL Server sürücüsü] TDS akışında protokol hatası [Microsoft] [ODBC SQL Server sürücüsü] Işlev sıra hatası

Ek Bilgi

Bu durumda, aynı anda temel alınan birkaç sorun olabilir. Öncelikle, sekmeli veri akışı (TDS) hatası, genel bir hata ve bir uzak veri hizmeti (RDS) uygulamasıyla ilgilenmediğiniz sürece, sorunun kaynağı için çok temiz bir işaretçi olmayacaktır. Döndürülen hata bilgilerini artırmak için, sp_oageterrorinfo aramayı sp_displayoaerrorinfo için değiştirmeniz gerekir. Bu ek bilgilere erişmek için öncelikle aşağıdaki SQL Server 7,0 kitapları çevrimiçi makalesinde belirtilen iki uygun saklı yordamı derlemeniz gerekir: OLE Automation Return Codes and Error Information Bu makalede, bu makalede açıklanmayan ek bilgiler ayıklamak amacıyla bu depolanmış yordamların neden gerekli olduğunu açıklayan ayrıntılı bilgiler açıklanmaktadır. Depolanan yordamları derlediğiniz zaman, önceki hatalar, daha fazla ilgi çekici çıktı vermek için değiştirilmiş hata işlemesini kullanan aşağıdaki kod parçasında gösterildiği gibi, daha fazla kullanılabilir bilgi verir:

DECLARE @object intDECLARE @hr intEXEC @hr = sp_OACreate 'Nic.cls', @object OUTPUTIF @hr <> 0BEGIN    EXEC sp_displayoaerrorinfo @object, @hr--  EXEC sp_OAGetErrorInfo @object    RETURNEND

Bu örnekte etkinleştirilen sp_displayoaerrorinfo çağrısı ile gelen ne olacak?

OLE Otomasyonu hata bilgileri HRESULT: 0x800401F3 kaynağı: ODTEK genişletilmiş yordam açıklaması: geçersiz sınıf dizesi

Bu örnekte, "geçersiz sınıf dizesi" hatasının, sp_oacreate çağrısında belirtilen ProgID veya CLSID (NIC. CLS), SQL Server 'da OLE nesnesi olarak başarıyla kaydedilmediğini belirtebiliriz. Örneğimizde, bu durum aslında, NIC. CLS hayali bir nesnedir. Bu hata türleri hakkında daha fazla bilgi için, SQL Server Books Online.In 'de sp_oaGetErrorInfo arama belgelerine göz atın, burada aşağıdakine benzer şekilde, aşağıdaki kodda "Select @hr" ifadesini bulabilirsiniz:

DECLARE @oFTP intDECLARE @hr int  DECLARE @vvar varchar(255)DECLARE @vout intEXEC @hr = sp_OACreate 'Nic.Inet', @object OUTPUTSELECT @hrIF @hr <> 0BEGIN    EXEC sp_displayoaerrorinfo @object, @hr--   EXEC sp_OAGetErrorInfo @object    RETURNEND

Bu, önceden etkinleştirilmiş olarak aşağıdaki hata bilgilerini döndürür:------------2147221005(1 row(s) affected)

OLE Otomasyonu hata bilgileri HRESULT: 0x800401F3 kaynağı: ODTEK genişletilmiş yordam açıklaması: geçersiz sınıf dizesi

Yalnızca "komutun başarıyla tamamlandı" sonucuna gerçekten yanlış bir başarı döndürse, EXEC sp_OAGetErrorInfo @object çağrısına yalnızca bir @hr eklenmesi geçicinmelidir. Bununla birlikte, bu aslında, koddaki @hr neden sıfır olmayan bir sonuç aldığınızı bilmemiz gerektiğinden bu tür bir işlem yapabiliriz.Not Microsoft SQL Server 2005 kullanıyorsanız, bu kodu biraz daha değiştirmeniz gerekebilir. Daha fazla bilgi için SQL Server 2005 Books Online 'daki "OLE Otomasyonu dönüş kodları ve hata bilgileri" konusuna bakın.

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×