Düzeltme: BIR SELECT sorgusu beklenmedik biçimde yanlış sayıda satır SQL Server 2005 Mobile Edition ve SQL Server 2005 Compact Edition verir

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

Bu Sayfada

Belirtiler

SQL Server 2005 Mobile Edition ve Microsoft SQL Server 2005 Compact Edition bir SELECT sorgusu çalıştırdığınızda, sorgu, beklenmedik biçimde yanlış sayıda satır döndürür. Bu sorun, aşağıdaki koşullar geçerli olursa oluşur:
  • SELECT sorgusu, bir iç birleşim içerir.
  • Birleştirilen sütun üzerinde dizin bir birleştirilmiş iki tablo vardır. Diğer tablo sütunlarından birinin dizin vardır.
Örneğin, SQL Server 2005 Mobile Edition'da aşağıdaki sorguyu çalıştırmak:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
Not bu örnekte, dizin <a1>Tablo</a1> T1 olan sütunu Col. Tablo T2 sütunu Sütun1'üzerinde dizin yok.

Neden

Bu sorun, sorgu en iyi duruma getiricisi önceki planı tümüyle atmak değil nedeniyle oluşur. Sorguyu çalıştırmak için en iyi planı sorgu en iyi duruma getiricisi karar önce sorgu en iyi duruma getiricisi birden fazla sorgu planları dikkate alır. Bazı durumlarda, sorgu en iyi duruma getiricisi dizin koşulu değerlendirmek için kullandığı bir plan bulabilirsiniz. Ancak, sorgu en iyi duruma getiricisi daha iyi bir plan daha sonra bulabilir. Bu durumda, sorgu en iyi duruma getiricisi daha iyi bir plan kullanılacak önceki planı atar.

Çözüm

Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın:
  • Ikinci tablodaki birleştirilmiş sütun üzerinde bir dizin oluşturun.
  • Birleştirilen ilk tablodaki sütun dizini silin.
Not "Belirtiler" bölümündeki örnekte, ikinci tablonun birleştirilen sütunu T2.Col1 ' dir. Birleştirilen ilk sütunu T1.Col ' dir.

Durum

Microsoft bu durumun, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

  1. Bir veritabanı SQL Server 2005 Mobile Edition'da aşağıdaki ifadeleri çalıştırın:
    CREATE TABLE T1 (COL INT);
    GO;
    CREATE INDEX T1_IDX ON T1 (COL);
    GO;
    INSERT INTO T1 VALUES (1);
    INSERT INTO T1 VALUES (2);
    INSERT INTO T1 VALUES (3);
    GO;
    CREATE TABLE T2 (COL1 INT, COL2 INT);
    GO;
    INSERT INTO T2 VALUES (1,1);
    INSERT INTO T2 VALUES (2,2);
    INSERT INTO T2 VALUES (3,3);
    GO;
  2. Aşağıdaki ifadeyi çalıştırın:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    , "Belirtiler" bölümünde anlatılan sorunla karşılaşabilirsiniz.

Özellikler

Makale numarası: 933697 - Last Review: 13 Mart 2007 Salı - Gözden geçirme: 1.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2005 Mobile Edition
  • Microsoft SQL Server 2005 Compact Edition
Anahtar Kelimeler: 
kbmt kbtshoot kbexpertiseadvanced kbbug KB933697 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:933697

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