Düzeltme: SQL Server 2008'de null bir sütunun değeri seçmek bir sorgu çalıştırdığınızda "girişiminde bulunuluyor olmayan-NULL-mümkün sütunun değeri NULL olarak ayarlamak" hata iletisi ISNULL() fonksiyonunu kullanır

Makale çevirileri Makale çevirileri
Makale numarası: 981037 - Bu makalenin geçerli olduğu ürünleri görün.
Microsoft, Microsoft SQL Server 2008'in düzeltmeleri tek bir yüklenebilir dosya dağıtır. Düzeltmeleri birikimli olduğu için her yeni sürüm, tüm düzeltmeleri içerir ve sürüm önceki SQL Server 2008'in içerdiği tüm güvenlik düzeltmelerini düzeltin.
Hepsini aç | Hepsini kapa

Belirtiler

Şu senaryoyu inceleyin:
  • Microsoft SQL Server 2008'de bir sütuna null değerler seçmeye ISNULL() işlevini kullanan bir sorgu çalıştırın.
  • Null olabilecek sütunu içeren tablonun başka bir tabloya sütun null ile birleştirilir.
  • Query Optimizer'tarafından oluşturulan sorgu planı karma birleştirme, bir biriktirme ya da aşağıda JOIN işleci bir sıralama tablosu kullanır.
Bu senaryoda, aşağıdaki hata iletisini alırsınız:
Msg 681, Düzey 16, State 3, satır 2
Non-NULL-mümkün sütunun değeri NULL olarak ayarlamak çalışıyor.

Neden

Sorgu Optimizer birleşim işleci NULL değerleri reddeder çünkü ISNULL() işlevi başvurulan sütun null olmayan olduğunu belirler. Daha sonra sorgu planlamasını Query Optimizer JOIN işleci aşağıda ISNULL() işlevi, deyimi iter. Ayrıca, ifadenin değeri BOş olabilir. Ancak, Query Optimizer ifadenin nullability özelliği re-derive değil. Daha sonra sorgu planlamasını karma birleştirme, biriktirme veya ifadeyi içeren sıralama tablosu uygulamak için bir iş tablosu kullanılır. Ayrıca <a0>iş</a0> tablosundaki ilgili sütunu olmayan-null olarak bildirildi. NULL değerleri iş tablosuna eklemek SQL Server sorgu motorunun çalıştığında bu hata oluşur.

Çözüm

Bu sorunla ilgili düzeltme, ilk önce SQL Server 2008 Service Pack 1 için toplu güncelleştirme 7'de yayımlanmıştır. Bu toplu güncelleştirme paketi hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
979065SQL Server 2008 Service Pack 1 için toplu güncelleştirme paketi 7
Not Yap?lar birikimli olduğu için her yeni düzeltme yayımlanan tüm düzeltmeleri içerir ve sürüm önceki SQL Server 2008'in içerdiği tüm güvenlik düzeltmelerini düzeltin. Bu düzeltmeyi içeren en son düzeltme sürümü uygulama ele almanızı öneririz. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
970365SQL Server 2008, SQL Server 2008 Service Pack 1'de yayımlandıktan sonra yayımlanan oluşturur
Microsoft SQL Server 2008'in, düzeltmeleri belirli SQL Server hizmet paketleri için oluşturulur. SQL Server 2008 Service Pack 1 yüklemesi için bir SQL Server 2008 Service Pack 1 düzeltme uygulamanız gerekir. Varsayılan olarak, sonraki SQL Server hizmet paketi ile bir SQL Server hizmet paketinde sağlanan herhangi bir düzeltme bulunmaktadır.

Pratik Çözüm

Bu soruna geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın.

Yöntem 1

ISNULL() işlevi sorgudan kaldırır.

NotBu işlev sütun NULL değerleri reddeden JOIN işleci gelir, çünkü ISNULL() yedek işlevidir.

Yöntem 2

Sorgu planı kullanmaz, karma birleştirme, bir biriktirme veya bir sıralama tablosu, sorguyu yeniden yazın. Örneğin, sorgunuzu ORDER BY yan tümcesi içeriyorsa, gerekli sıralama ve tüm gerekli sütunları içeren kümelenmiş veya covering bir dizin oluşturun. Bu yöntemi kullandığınızda, Query Optimizer bir sıralama tablosu kullanmaz.

Durum

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

Referanslar

SQL Server için artımlı hizmet modeli hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
935897SQL Server ekibinden bildirilen sorunlar için düzeltmeler ulaştırmak için artımlı bir hizmet modeli kullanılabilir


SQL Server güncelleştirmelerinin adlandırma şeması hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
822499Microsoft SQL Server yazılım güncelleştirme paketlerinin yeni adlandırma şeması


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ını tıklatın:
824684Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Özellikler

Makale numarası: 981037 - Last Review: 15 Mart 2010 Pazartesi - Gözden geçirme: 1.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Anahtar Kelimeler: 
kbmt kbhotfixserver kbexpertiseadvanced kbsurveynew kbqfe kbfix KB981037 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:981037

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