Düzeltme: IN ve UNION yan tümceleri yanlış sütun sayısı 1.000.000

Makale çevirileri Makale çevirileri
Makale numarası: 283842 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

Microsoft OLE DB sağlayıcı ile için Oracle'nın (MSDAORA), hem de bir IN ve bir UNION yan tümcesi içeren bir SQL deyimi yürütülmesini yanlış sayıda sütun içeren bir ActiveX Data Objects (ADO) Recordset nesnesi oluşturabilir.

(Bu, CursorLocation özelliğini adUseClient olarak ayarlandığı anlamına gelir) bir ADO istemci tarafı imleci kullanarak bu sorun oluşur, ancak bir sunucu tarafı imleci kullanarak, düzgün olarak çalışır.

Çözüm

Bu sorunu gidermek için <a0></a0>, Microsoft, MDAC 2.5 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
293312BILGI: son MDAC 2.5 nasıl elde edilir hizmet paketi
Bu sorunu gidermek için <a0></a0>, Microsoft Data Access Components 2.6 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
300635BILGI: son MDAC 2.6) nasıl elde edilir hizmet paketi

Düzeltme

Bu düzeltmenin İngilizce sürümünde aşağıdaki dosya öznitelikleri veya üstü bulunur:
   Version       Size      File name     Platform
   -------------------------------------------------------
   2.53.6007.0   209,168   Msdaora.dll   x86
				

Pratik Çözüm

Bir sunucu tarafı imleci kullanırsanız sorun oluşmaz, CursorLocation özelliğini adUseServer için ayarlanır.

Durum

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak Microsoft Data Access Components 2.6 Service Pack 2, MDAC 2.5 SP3 ve MDAC 2.7 giderilmiştir.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. Aşağıdaki kod yeni bir Visual Basic projesinde eklemek ve ActiveX Data Objects 2.5 kitaplığı için bir proje başvurusu ayarlayın:
    Private Sub Command1_Click()
    
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        cn.Open "Provider=MSDAORA;Data Source=your_oracle_server;User ID=your_user_name;Password=your_password"
        On Error Resume Next
        cn.Execute "Drop table oratest"
        cn.Execute "CREATE TABLE ORATEST(Col1 VARCHAR2(10) NULL," & _
                   "Col2 VARCHAR2(10) NULL)"
        cn.Execute "insert into oratest values(7,7)"
        cn.Execute " insert into oratest values(6,6)"
        cn.Execute "Drop table DUAL"
        cn.Execute "CREATE TABLE DUAL(C11 VARCHAR2(10) NULL," & _
                   "C12 VARCHAR2(10) NULL)"
        cn.Execute "insert into dual values(6,7)"
        rs.CursorLocation = adUseClient
        rs.Open "select col1, col2 from oratest where col1 in (Select C11 from dual union select C12 from dual)", _
                cn, adOpenStatic,adLockBatchOptimistic
        
        Debug.Print rs.Fields.Count      '<--- incorrect column count       
        Debug.Print rs.Fields(0).Name
        Debug.Print rs.Fields(1).Name
    End Sub
    					
  2. Yukarıdaki proje çalıştırdığınızda, yanlış bir sütun sayısı görüntülenir. "Nesne açma alınamadı" hata görebilirsiniz kayıt kümesinin alanlar sayısı <a0>Visual Basic izleme</a0> penceresindeki hangi koşullarda inceleyin. Bu durumda, "Debug.Print rs.Fields.Count" satırı komut penceresi içinde herhangi bir sonuç yazdıracak değil.

Özellikler

Makale numarası: 283842 - Last Review: 7 Nisan 2006 Cuma - Gözden geçirme: 6.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.6
Anahtar Kelimeler: 
kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kboracle kbprovider KB283842 KbMttr
Machine-translated Article
Ö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:283842

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com