Düzeltme: bir dize parametresi veya bir SQL Server Compact 3.5 veritabanı karşı ikili bir parametre "için LINQ varlıklar" sorgu çalıştırdığınızda hata iletisi kullanır: "nerede, ntext ve resim veri türleri kullanılamaz, sahip, üzerinde veya IN'dir grupla...

# Hata: 99150 (İçerik Bakımı)hata #: 50003448 (SQL düzeltmesi)

Özet

Bu makalede bu düzeltme sürümü hakkında aşağıda açıklanmaktadır:

  • Düzeltme paketi ile giderilen sorunlar

  • Düzeltme paketini yükleme önkoşulları

  • Olup düzeltme paketini yükledikten sonra bilgisayarı yeniden başlatmanız gerekir

  • Düzeltme paketinin başka bir düzeltme paketiyle değiştirilip

  • Kayıt defteri değişiklikleri yapmanız gerekip gerekmediği

  • Düzeltme paketinin içerdiği dosyalar

Belirtiler

Aşağıdaki senaryoyu ele alın. Bir uygulama, bir Microsoft SQL Server Compact 3.5 veritabanına erişmek için Microsoft .NET Framework 3.5 Service Pack 1 dahil Microsoft ADO.NET Entity Framework kullanır. Uygulamada, bir dize parametresi veya veritabanına karşı ikili bir parametre kullanan bir "Varlık için LINQ" sorgu çalıştırın. Uygulamayı çalıştırdığınızda, bu senaryoda, aşağıdaki hata iletisini alırsınız:

Ntext ve resim veri türleri, WHERE, HAVING, GROUP BY, üzerinde veya yan tümceleri, bu veri türleri, benzer ile kullanılması dışında veya NULL yüklemler içinde kullanılamaz.

Neden

Bir uygulamada "için LINQ varlıklar" sorgu parametrelerini kullandığınızda, temel veritabanı türleri belirtemezsiniz. SQL Server Compact Entity Framework sağlayıcı özgün parametre üzerinde varlık veri modeli (EDM) özellikleri temel sağlayıcı düzey parametre oluşturmayı dener. SQL Server Compact varbinary(max) veri türü veya nvarchar(max) veri türünü desteklemiyor. Bu nedenle, sağlayıcının veri türü Edm.String veri türü veya Edm.Binary veri türünde bir parametre için seçtiğinde, sağlayıcı parametre parametresinin EDM özellikleri üzerinde aşağıdaki veri türlerinden biri olarak işaretlemek vardır:

  • Bir dize parametresi için sağlayıcı nvarchar(4000) veri türü veya ntext veri türünü seçer.

  • İkili bir parametre için sağlayıcı varbinary(4000) veri türü veya Resim veri türünü seçer.

Sağlayıcı parametre nvarchar(4000) veri türü olarak veya varbinary(4000) veri türü olarak işaretlerse, 8.000 bayttan daha büyük olan değerler eklemeye çalıştığınızda bir hata oluşur. Sağlayıcı parametre veri türü Resim veya ntext veri türü olarak işaretlerse, parametre üzerinde herhangi bir eşitlik işlemleri, gruplandırma işlemleri veya sıralama işlemleri yapılmakta olan ek olarak, bir hata ortaya çıkar.

Çözüm

Düzeltme bilgileri

Microsoft, desteklenen bir düzeltmeyi kullanıma sunmuştur. Ancak bu düzeltme yalnızca bu makalede anlatılan sorunu düzeltmek amacıyla hazırlanmıştır. Bu düzeltmeyi yalnızca bu makalede açıklanan sorunun yaşandığı sistemlere uygulayın. Bu düzeltme, ek test süreci gerektirebilir. Bu nedenle bu sorundan ciddi bir şekilde etkilenmiyorsanız, bu düzeltmeyi içeren bir sonraki yazılım güncelleştirmesini beklemeniz önerilir.

İndirilebilir bir düzeltme varsa, bu Bilgi Bankası makalesinin üst kısmında "Düzeltme İndirilebilir" bölümü bulunur. Bu bölüm görünmüyorsa, düzeltmeyi edinmek üzere Microsoft Müşteri Hizmetleri ve Destek'e başvurun.

Not: Ek sorunlar oluşursa veya sorun giderme gerekiyorsa, ayrı bir hizmet isteği oluşturmanız gerekebilir. Ek destek sorularına ve bu düzeltme için geçerli olmayan sorunlara normal destek ücretleri uygulanır. Microsoft Müşteri Hizmetleri ve Destek bölümünün tam liste telefon numaralarına ulaşmak veya ayrı bir hizmet isteği oluşturmak için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://support.microsoft.com/contactus/?ws=supportNot: "Düzeltme indirilebilir” formu, düzeltmenin indirilebildiği dilleri görüntüler. Kendi dilinizi görmüyorsanız, bu dil için bir düzeltme mevcut değil demektir.

Önkoşullar

Bu düzeltmeyi uygulamak için önceden yüklenmiş SQL Server Compact 3.5 Service Pack bu düzeltmeyi birlikte sağlanan bir .msi dosyasını yüklemek için 1 kaldırmanız gerekir. Önceden yüklenmiş SQL Server Compact 3.5 Service Pack 1 kaldırmayın, SQL Server Compact bir sonraki sürümü zaten yüklü olduğunu belirten bir yükleme hatası iletisi alırsınız. SQL Server Compact 3.5 Service Pack 1 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:

955965 SQL Server Compact 3.5 Service Pack 1 açıklaması

Yeniden başlatma bilgileri

Bu düzeltmeyi uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekmez.

Kayıt defteri bilgileri

Kayıt defterini değiştirmeniz gerekmez.

Düzeltme dosyası bilgileri

Bu düzeltme yalnızca bu makalede listelenen sorunları düzeltmeniz için gereken dosyaları içerir. Bu düzeltme, bir ürünü en son sürüme tam olarak güncelleştirmek için gereken tüm dosyaları içermeyebilir.

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'te (UTC) listelenmiştir. Dosya bilgilerini görüntülediğinizde koordinatlı evrensel saat yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için Denetim Masası'ndaki Tarih ve Saat öğesinde Saat Dilimi sekmesini kullanın.

Dosya adı

Dosya sürümü

Dosya boyutu

Tarih

Saat

Platform

System.data.sqlserverce.entity.dll

3.5.5692.1

230,480

24-Sep-2008

06:46

x86/x64/IA-64

System.data.sqlserverce.dll

3.5.5692.1

271,440

24-Sep-2008

06:46

x86/x64

Policy.3.5.system.data.sqlserverce.dll

3.5.5692.1

13,392

24-Sep-2008

06:46

x86/x64

Policy.3.5.system.data.sqlserverce.entity.dll

3.5.5692.1

13,392

24-Sep-2008

06:46

x86/x64

Sqlceca35.dll

3.5.5692.1

343,104

24-Sep-2008

08:07

x86

Sqlcecompact35.dll

3.5.5692.1

84,544

24-Sep-2008

08:07

x86

Sqlceer35en.dll

3.5.5692.1

148,032

24-Sep-2008

08:07

x86

Sqlceme35.dll

3.5.5692.1

65,088

24-Sep-2008

08:07

x86

Sqlceoledb35.dll

3.5.5692.1

172,608

24-Sep-2008

08:07

x86

Sqlceqp35.dll

3.5.5692.1

644,160

24-Sep-2008

08:07

x86

Sqlcese35.dll

3.5.5692.1

348,224

24-Sep-2008

08:07

x86

Bu düzeltme genel karşıdan yükleme (Bu makalede bu düzeltme için genel bir URL sağlanmayan anlamına gelir) için nakledilmemişse, dağıtım için teknik lider, yükseltme ekibi üyesi veya yönetici onayı gerekir ve aşağıdaki bilgiler geçerlidir:

  • Düzeltmeyi almak için müşterilerin "Belirtiler" bölümünde sözü edilen hata ile karşılaşmaları gerekir.

  • Bunu gönderdiğiniz ve bir sonraki hizmet paketini (bir hizmet paketi yayımlanırsa) kullanılabilir duruma geldiğinde bunları tedarik müşterileri izlemeniz gerekir.

Bu düzeltme gelecekteki düzeltmeler ve hizmet paketleri, SQL Server Compact 3.5 Service Pack 1 ile eklenmesi zamanlanmıştır.

"Çözüm" bölümünde bu düzeltmenin bağımsız bir düzeltme olarak veya en son hizmet paketinde kullanılabilir olup olmadığını belirtir. Karşılaştırma ve sınama için özgün düzeltme http://hotfix Web sitesinden edinilebilir.

Destek uzmanına Not: Yapı 3.5.5692.1 edinmek için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://hotfix

KB arama kutusuna 958478yazın ve Git' i tıklatın.

Durum

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

Daha fazla bilgi

Bu düzeltmeyi uyguladıktan sonra sağlayıcı EDM bir parametre için veri türünü tahmin değil. Dize veri türü veya EDM . İkili veri türü. Sorgu işlemcisi değerin veya sütun, parametre eşitlenmiş veya parametre kullanılan ile temel parametre için doğru veri türünü seçer.

Örneğin, bu düzeltmeyi uygulamadan önce aşağıdaki varlık SQL sorgusunda Sorgu işlemcisi ntext veri türü adı parametresi için seçer.

String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;

Bu düzeltmeyi uyguladıktan sonra İlk_Ad sütunun veri türü adı parametresi için seçilir.

Name parametresi için eşitlenmiş ne herhangi başka bir değer veya sütun ile kullanılan ancak, aşağıdaki örnekte, "Varlık için LINQ" sorgu başarısız olur.

String name = "XYZ";var q = from e in nwind.Employees
select name;

Bu düzeltme, SQL Server Compact 3.5 için Benioku belgesinde açıklanan bilinen bir sorunu da giderir. Daha fazla bilgi için aşağıdaki Microsoft Web sitesinin "SQL Server Compact 3.5 SP1 Runtime sorunları için ADO.NET varlık çerçevesini" bölümüne bakın:

http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmBu düzeltme, sağlayıcı yapıları uygulamak için skalar alt sorgular dönüştürdüğünde, oluşturulan yanlış Transact-SQL deyimleri için ilgili sorunu giderir.

Not: İlişkili alt sorgusu skalar alt sorgular için dahili olarak dönüştürülür. İlişkili alt sorgular, bu sürümde desteklenmiyor. Bu sorgular çalıştırdığınızda, aşağıdaki hata iletisini alırsınız:

Komut tanımı yürütülürken bir hata oluştu. Ayrıntılar için iç özel duruma bakın.

İç özel durum aşağıdaki iletiyi içerir:

Sorgu ayrıştırılırken hata oluştu. [.., Hatalı simge = AS]

ADO.NET Entity Framework Giriş sorgu uygulamak çapraz birleşim türünü veya geçerli dış birleşim türü olan bir sorgu yorumlar nedenidir. Birleştirme koşulu sağ tarafında skalar bir değer döndürürse, skalar bir alt sorgu birleştirme dönüştürülür. ADO.NET Entity Framework sağlayıcı için SQL Server Compact SQL Server Compact tarafından desteklenen uygulama dış birleşim türüne sahip eşdeğer bir sorguya skalar bu alt sorgu dönüştürmek vardır. Ancak, bu sürümde bu dönüştürme doğru geçilmez. Örneğin, aşağıdaki sorgu bu sürümde bir hata oluşur.

C# Sample Application:using (NorthwindEntities nwEntities = new NorthwindEntities())
{
var orders = nwEntities.Employees
.Select(employee => employee.Orders.Max(order => order.Order_ID));
foreach (var order in orders)
{
Console.WriteLine(order.ToString());
}
}

SQL Server güncelleştirmelerinin adlandırma şeması 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:

822499 yeni adlandırma şeması Microsoft SQL Server yazılım güncelleştirme paketlerinin

Yazılım güncelleştirme terminolojisi hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Çağrı yığını bilgileri

   at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence)
at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression)
at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)


Yazar: bruceye; rtandon
Yazan: ericzha
Teknik İnceleme: Kennethr; abidkhan; rtandon; vamshikb
Düzenleyen: v-andmck

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×