Düzeltme: bir sorgu çalıştırdığınızda hatalı sonuç, bağlaç ve bir sql Server Compact 3.5 disjunction içerir.

Makale çevirileri Makale çevirileri
Makale numarası: 2494715
Hepsini aç | Hepsini kapa

Belirtiler

Bir Microsoft sql Server Compact 3.5 veritabanı karşı bir sorgu çalıştırdığınızda, yanlış sonuç verir. Bağlaç ve bir disjunction sorgu içeriyorsa, bu sorun oluşur. Biz operatörleri olduğunu varsayarsak VE ve OR, sorgu aşağıdaki belirli koşulları karşılaması gerekir:
  • İşlenenleri birini VE işleç içeren bir deyim olarak OR işleci.
  • İşlenenleriORişlecini aynı sütuna başvuru deyimleri içerir. Bu nedenle, sütun dizini ifadeler eşleştirmek için kullanılır.
  • Diğer işleneninde VEoperatör bu listedeki önceki maddesinde belirtilen sütun olarak aynı dizin kullanan bir sütuna başvuru içeriyor. Bu nedenle, dizinin bu deyim üzerinde kullanılabilir.
Örneğin, aşağıdaki tablolarda dizinler kullanan bir sql Server Compact 3.5 veritabanı içinde oluşturduğunuz varsayılmıştır.
CREATE TABLE T1(
 C1 int,
 C2 int
)
GO
CREATE INDEX IND_T1 ON T1 (C1, C2)
GO
CREATE TABLE T2(
 C1 int,
 C2 int
)
GO
CREATE INDEX IND_T2 ON T2 (C1, C2)
GO
INSERT INTO T1 VALUES (1, 0)
GO
INSERT INTO T1 VALUES (2, 0)
GO
INSERT INTO T2 VALUES (1, -1)
GO
INSERT INTO T2 VALUES (2, 0)
GO
Daha sonra aşağıdaki sorguyu çalıştırın:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 ON
T1.C1 = T2.C1
AND (T1.C2 = T2.C2 OR T2.C2 = -1)
GO
Sorguyu çalıştırmak sonra aşağıdaki yanlış sonuç alırsınız:
Bu tabloyu kapaBu tabloyu aç
T1.C1T1.C2T2.C1T2.C2
2020
Bununla birlikte, aşağıdaki sonucu bekler:
Bu tabloyu kapaBu tabloyu aç
T1.C1T1.C2T2.C1T2.C2
101-1
2020
NotBu sorun da kullandığınızda oluşurBURADAmantıksal birlikte iki deyim üzerinde gerçekleştirmek için yan tümcesi. Örneğin, aşağıdaki sorgu çalıştırdığınızda da bu sorun oluşur:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 ON
T1.C1 = T2.C1
WHERE T1.C2 = T2.C2 OR T2.C2 = -1
GO

Çözüm

Bu sorunu gideren bir düzeltme, sql Server Compact 3.5 Service Pack 2 için toplu güncelleştirme paketi 4 eklenmiştir.

sql Server Compact 3.5 Service Pack 2 için toplu güncelleştirme paketi 4'i elde etme 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:
2516828 Toplu güncelleştirmesi 4 sql Server Compact 3.5 Service Pack 2

Pratik Çözüm

Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanarak sorguyu yeniden yazın:

Yöntem 1

Dizinler devre dışı bırakmak için sorguda tablo ipuçlarını kullanın. Örneğin, dizinler devre dışı bırakmak için aşağıdaki sorguyu çalıştırın:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 WITH (INDEX(0)) ON
T1.C1 = T2.C1
AND (T1.C2 = T2.C2 OR T2.C2 = -1)
GO 

Yöntem 2

"Belirtiler" bölümünde belirtilen koşullara uyan önlemek için sorguyu yeniden yazma:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]
FROM T1 INNER JOIN T2 ON
(T1.C1 = T2.C1 AND T2.C2 = -1) OR (T1.C1 = T2.C1 AND T1.C2 = T2.C2)

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Özellikler

Makale numarası: 2494715 - Last Review: 27 Nisan 2011 Çarşamba - Gözden geçirme: 2.0
Anahtar Kelimeler: 
kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB2494715 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:2494715

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