Makale numarası: 2517589 - Son Gözden Geçirme: 25 Mayıs 2012 Cuma - Gözden geçirme: 5.0

Windows 7 sp 1 veya Windows Server 2008 R2 sp 1'i çalıştıran veya KB983246 yüklü olan bir bilgisayara yeniden derlemeniz sonra ado uygulama alt düzey işletim sistemleri üzerinde çalışmıyor

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Dikkat Tam ado ve ado md Microsoft sınanmamıştır.net Framework ortamında. Aralıklı Sorunlar bunlar özellikle hizmet tabanlı uygulamaları veya çok iş parçacıklı uygulamalar neden olabilir. Bu makalede açıklanan teknikler ado geçiş sırasında yalnızca geçici bir önlem olarak kullanılmalıdır.NET. Bu teknikler yalnızca tam uyumluluk sorunları yok olduğundan emin olmak için sınama yaptıktan sonra kullanmanız gerekir. ado veya ado md bu şekilde kullanımından kaynaklanan sorunlar desteklenmez. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki aşağıdaki makaleye bakın:
840667   (http://support.microsoft.com/kb/840667/ ) ado ve ado md de kullanırken beklenmeyen hatalar almak bir.net Framework uygulama
Hepsini aç | Hepsini kapa

Belirtiler

Aşağıdaki senaryoyu düşünün. Windows 7 Service Pack 1 (SP1) veya Windows Server 2008 R2 sp 1 veya KB9823246 yüklü olan çalışan bir bilgisayarda bir Microsoft ActiveX Data Objects (ado) uygulaması aşağıdaki uygulamalardan birini kullanarak derlemeniz:
  • Microsoft Visual c++
  • Microsoft Visual Basic for Applications (vba)
  • Microsoft Visual Basic 6
  • Microsoft.net uygulamaları
Bu senaryoda, uygulama alt düzey işletim sistemlerinde çalışmaz bulun. Örneğin, Windows 7 sürümü, Windows Vista ve önceki Windows sürümlerinde çalışmaz. Uygulamanız bağlı olarak, aşağıdakilerden birine benzer bir hata iletisi de alırsınız. (Diğer hata iletileri alabilirsiniz.)

Hata iletisi 1
REGDB_E_CLASSNOTREG (0X80040154)
Hata iletisi 2
E_POINTER (0X80004003)
Hata iletisi 3
E_NOINTERFACE (0X80004002)
4 Hata iletisi
Arabirim türü için ' System.__ComObject' türü cast com nesnesi oluşturulamıyor ' adodb.Bağlantı '. IID {00001550-0000-0010-8000-00AA006D2EA4} arabirimi com bileşenindeki QueryInterface çağrısı aşağıdaki hata nedeniyle başarısız olduğundan bu işlem başarısız oldu: Böyle bir arabirim desteklenmiyor (HRESULT özel durum: 0x80004002 (E_NOINTERFACE)). "
Bu sorun aşağıdaki Visual c++ kod bölütü çoğaltır.
#import " msado15.dll" no_namespace rename("EOF","EndOfFile")
 
int main()
{
  CoInitialize(NULL);
  _ConnectionPtr pConnection = NULL;
     HRESULT hr = pConnection.CreateInstance(__uuidof(Connection)); //hr gets E_NOINTERFACE here
}
Bu sorun aşağıdaki Visual Basic for Applications kod bölütü çoğaltır.
Private Sub Form_Load()
 Dim Conn As New ADODB.Connection ‘Runtime error here: Class does not support Automation or does not support expected interface
End Sub
vba hatası:Çalışma zamanı hatası '430': Sınıf otomasyonu desteklemiyor veya beklenen arabirimi desteklemiyor.

Not Microsoft artık birincil birlikte çalışma derlemesi için ado ve artık Visual Basic 6 destekler. Visual Basic 6 supportability hakkında daha fazla bilgi için aşağıdaki msdn Web sayfasını ziyaret edin:
Deyimi, Visual Basic 6.0 Windows Vista, Windows Server 2008 ve Windows 7 desteği (http://msdn.microsoft.com/en-us/vbasic/ms788708.aspx)
ado desteklenebilirlik için birincil birlikte çalışma derlemesini hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
318559  (http://support.microsoft.com/kb/318559/ ) Birincil birlikte çalışma derlemesi için ado (adodb) Visual Studio kullanarak.NET

Neden

Yeni örneği tanımlayıcıları (IID'leri) ilişkilendirilmesi için Windows 7 SP1'deki bazı ado arabirimleri değiştirildi bu sorun oluşur. Eski IID arabirimleri aşağıdaki soneki atanmış:
_Deprecated
Örneğin, bir arabirim _Connection gibi güncelleştirilmiştir:
  • Windows 7 ve önceki Windows sürümlerinde, IID _Connection 00000550-0000-0010-8000-00AA006D2EA4.
  • Windows 7 SP1 IID _Connection 00001550-0000-0010-8000-00AA006D2EA4 ve _Connection_Deprecated için IID 00000550-0000-0010-8000-00AA006D2EA4.
Uygulamanız için _Connection erken bağlama kullanıyorsa, yeni IID uygulama derlemesi sırasında ikili saklanır. IID olmadığı için uygulama bir alt düzey işletim sisteminde çalışırken bu hataya neden olur.

Bazı ado API platforma bağımlı ado 2.7 ve sonraki sürümleri. 64-Bit sürümlerinde Windows 64-bit veri türü ( longlong veri türü gibi) kullanarak bu ado API bağımsız işler. Ancak, bu API'leri kullanan uygulamalar hala UZUN veri türünü kullanın. Bu nedenle, makro çalıştırmayı denediğinizde bir "Tür Uyuşmazlığı" hata iletisi alırsınız.

Çözüm

Bu sorunu gidermek için Microsoft Bilgi Bankası'ndaki aşağıdaki makalede açıklanan güncelleştirmelerden birini yükleyin:
2640696  (http://support.microsoft.com/kb/2640696/ ) Windows 7 SP1 veya Windows Server 2008 R2 SP1 derlenmiş ado tabanlı bir uygulama, Windows'un önceki sürümlerinde çalışmaz

Daha fazla bilgi

Daha iyi bir çözüm için Windows 7 SP1 ado GUID değişiklikleri
http://blogs.msdn.com/b/psssql/archive/2011/10/03/Yes-We-Made-a-mistake-and-are-finally-Going-to-fix-it.aspx (http://blogs.msdn.com/b/psssql/archive/2011/10/03/yes-we-made-a-mistake-and-are-finally-going-to-fix-it.aspx)

Bu makaledeki bilginin uygulandığı durum:
  • Windows 7 Enterprise
  • Windows 7 Home Basic
  • Windows 7 Home Premium
  • Windows 7 Professional
  • Windows 7 Starter
  • Windows 7 Ultimate
  • Microsoft Windows XP Service Pack 3
  • Microsoft Windows Server 2003 Service Pack 2
  • Windows Vista Business
  • Windows Vista Business 64-bit edition
  • Windows Vista Enterprise
  • Windows Vista Enterprise 64-bit edition
  • Windows Vista Home Basic
  • Windows Vista Home Basic 64-bit edition
  • Windows Vista Home Premium
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Service Pack 1
  • Windows Vista Service Pack 2
  • Windows Vista Starter
  • Windows Vista Ultimate
  • Windows Vista Ultimate 64-bit edition
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Datacenter without Hyper-V
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Enterprise without Hyper-V
  • Windows Server 2008 for Itanium-Based Systems
  • Windows Server 2008 for Windows Essential Server Solutions
  • Windows Server 2008 for Windows Essential Server Solutions without Hyper-V
  • Windows Server 2008 Foundation
  • Windows Server 2008 Standard
  • Windows Server 2008 Standard without Hyper-V
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Datacenter without Hyper-V
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Enterprise without Hyper-V
  • Windows Server 2008 R2 for Embedded Systems
  • Windows Server 2008 R2 for Itanium-Based Systems
  • Windows Server 2008 R2 Foundation
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Standard without Hyper-V
Anahtar Kelimeler: 
kbprb kbsurveynew kbprogramming kbtshoot kbmt KB2517589 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 2517589  (http://support.microsoft.com/kb/2517589/en-us/ )