ID Artikel: 2517589 - Kajian Terakhir: 25 Mei 2012 - Revisi: 5.0

ADO aplikasi tidak berjalan pada sistem operasi tingkat bawah setelah Anda mengkompilasi ulang itu pada komputer yang menjalankan Windows 7 SP 1 atau Windows Server 2008 R2 SP 1 atau yang telah KB983246 diinstal

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Hati-hati ADO dan ADO MD memiliki tidak sepenuhnya diuji di Microsoft.NET Framework lingkungan. Mereka dapat menyebabkan isu-isu berselang, terutama dalam aplikasi berbasis layanan atau aplikasi multithreaded. Teknik yang dibahas dalam artikel ini hanya boleh digunakan sebagai ukuran sementara selama migrasi ke ADO.NET. Anda hanya harus menggunakan teknik-teknik ini setelah Anda telah melakukan lengkap pengujian untuk memastikan bahwa tidak ada masalah kompatibilitas mundur. Masalah yang disebabkan oleh menggunakan ADO atau ADO MD dengan cara ini tidak didukung. Untuk informasi lebih lanjut, lihat artikel berikut pada Pangkalan Pengetahuan Microsoft:
840667   (http://support.microsoft.com/kb/840667/ ) Anda menerima kesalahan tak terduga ketika menggunakan ADO dan ADO MD dalam.NET Framework aplikasi
Perbesar semua | Perkecil semua

GEJALA

Pertimbangkan skenario berikut. Pada komputer yang menjalankan Windows 7 paket layanan 1 (SP1) atau Windows Server 2008 R2 SP 1 atau yang telah KB9823246 diinstal, Anda mengkompilasi ulang aplikasi objek data ActiveX Microsoft (ADO) dengan menggunakan salah satu aplikasi berikut:
  • Microsoft Visual C++
  • Microsoft Visual Basic for Applications (VBA)
  • Microsoft Visual Basic 6
  • Microsoft.Aplikasi NET
Dalam skenario ini, Anda menemukan bahwa aplikasi tidak berjalan pada sistem operasi tingkat bawah. Sebagai contoh, itu tidak berjalan pada versi peluncuran Windows 7, Windows Vista, dan Windows versi lain sebelumnya. Tergantung pada implementasi Anda, Anda juga menerima sebuah pesan galat yang menyerupai hal yang berikut. (Anda mungkin menerima pesan kesalahan lain.)

Pesan galat 1
REGDB_E_CLASSNOTREG (0X80040154)
Pesan galat 2
E_POINTER (0X80004003)
Pesan galat 3
E_NOINTERFACE (0X80004002)
Pesan galat 4
Mampu cast COM objek dari tipe 'System.__ComObject' untuk jenis antarmuka ' ADODB.Koneksi '. Operasi ini gagal karena panggilan QueryInterface COM komponen untuk antarmuka dengan IID '{00001550-0000-0010-8000-00AA006D2EA4}' gagal karena galat berikut: tidak seperti antarmuka (pengecualian dari HRESULT: 0x80004002 (E_NOINTERFACE)). "
Segmen kode Visual C++ berikut mereplikasi masalah ini.
#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
}
Berikut Visual Basic untuk segmen kode aplikasi mereplikasi masalah ini.
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 kesalahan:Galat run-time '430': kelas tidak mendukung otomatisasi atau tidak mendukung antarmuka diharapkan

Catatan Microsoft tidak lagi mendukung Majelis interop utama untuk ADO dan tidak lagi mendukung Visual Basic 6. Untuk informasi lebih lanjut tentang Visual Basic 6 supportability, kunjungi halaman web MSDN berikut: Untuk informasi lebih lanjut tentang Majelis interop utama untuk ADO supportability, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
318559  (http://support.microsoft.com/kb/318559/ ) Menggunakan Majelis interop utama untuk ADO (ADODB) dalam Visual Studio.NET

PENYEBAB

Masalah ini terjadi karena beberapa antarmuka ADO diganti pada Windows 7 SP1 dikaitkan dengan contoh baru pengidentifikasi (IIDs). Antarmuka IID tua ditugaskan akhiran berikut:
_Deprecated
Sebagai contoh, antarmuka _Connection telah diupdate sebagai berikut:
  • Pada Windows 7 dan Windows versi sebelumnya, _Connection IID 00000550-0000-0010-8000-00AA006D2EA4.
  • Pada Windows 7 SP1, _Connection IID 00001550-0000-0010-8000-00AA006D2EA4, dan IID untuk _Connection_Deprecated 00000550-0000-0010-8000-00AA006D2EA4.
Jika aplikasi Anda menggunakan awal mengikat _Connection, IID baru disimpan dalam aplikasi biner selama kompilasi. Hal ini menyebabkan kesalahan ketika aplikasi yang berjalan pada sistem operasi tingkat bawah karena IID tidak ada.

Beberapa ADO api bergantung pada platform di ADO 2.7 dan di versi yang lebih baru. Pada versi 64-bit Windows, api ADO ini proses argumen dengan menggunakan tipe data 64-bit (seperti tipe data LONGLONG ). Namun, aplikasi yang menggunakan api ini masih menggunakan tipe data panjang . Oleh karena itu, Anda menerima pesan galat "Jenis Mismatch" ketika Anda mencoba menjalankan makro.

PEMECAHAN MASALAH

Untuk mengatasi masalah ini, instal salah satu pembaruan yang dijelaskan dalam artikel berikut pada Pangkalan Pengetahuan Microsoft:
2640696  (http://support.microsoft.com/kb/2640696/ ) Aplikasi berbasis ADO yang dikompilasi di Windows 7 SP1 atau di Windows Server 2008 R2 SP1 tidak berjalan pada Windows versi sebelumnya

INFORMASI LEBIH LANJUT

Solusi yang lebih baik untuk Windows 7 SP1 ADO pengenal unik global perubahan
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)

Berlaku bagi:
  • 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
Kata kunci: 
kbprb kbsurveynew kbprogramming kbtshoot kbmt KB2517589 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 2517589  (http://support.microsoft.com/kb/2517589/en-us/ )