Oprava: Při spuštění dotazu se zobrazí chybová zpráva, že "Pokus hodnotu bez NULL – možné sloupce nastavena na hodnotu NULL" používá funkce ISNULL() k výběru hodnot ve sloupci s možnou hodnotou Null v produktu SQL Server 2008

Překlady článku Překlady článku
ID článku: 981037 - Produkty, které se vztahují k tomuto článku.
Společnost Microsoft distribuuje opravy 2008 Microsoft SQL Server jako jeden soubor ke stažení. Vzhledem k tomu, že jsou kumulativní opravy, každá nová verze obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí SQL Server 2008, opravte uvolnění.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Předpokládejme následující situaci:
  • V Microsoft SQL Server 2008 spustíte dotaz používající funkci ISNULL() vyberte hodnoty, které jsou ve sloupci s možnou hodnotou Null.
  • Tabulku obsahující sloupec s možnou hodnotou NULL je připojen s jinou tabulkou ve sloupci s možnou hodnotou Null.
  • Plán dotazů, který je vytvořen pomocí optimalizace dotazu používá hash spojení, tiskové fronty nebo řazení tabulky pod operátor JOIN.
V tomto případě se zobrazí následující chybová zpráva:
Msg 681, úroveň 16 státu 3, řádek 2
Pokus o hodnotu bez NULL – možné sloupce nastavena na hodnotu NULL.

Příčina

Optimalizace dotazu určí, že sloupec, který je odkazován v ISNULL() funkce s možnou bez hodnotou Null protože operátor spojení odmítne hodnoty NULL. Potom v plánu dotazu tlačí optimalizace dotazu výraz, který je ve funkci ISNULL() pod operátor JOIN. Hodnota výrazu navíc může být NULL. Optimalizace dotazu však není re-derive vlastnost nullability pro výraz. V plánu dotazu poté, pracovní tabulka se používá k provedení spojení hash, fronty nebo řazení tabulky, obsahující výraz. Navíc je odpovídající sloupec v tabulce pracovního deklarován jako s možnou bez hodnotou Null. Dotazovací modul SQL Server se pokusí vložit hodnoty NULL do tabulky prací, dojde k chybě.

Řešení

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 7 pro SQL Server 2008 Service Pack 1. Další informace o této kumulativní aktualizaci balíčku získáte následujícím článku báze Microsoft Knowledge Base:
979065Balíček kumulativní aktualizace 7 pro SQL Server 2008 Service Pack 1
Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí SQL Server 2008, opravte uvolnění. Doporučujeme zvážit použití nejnovější vydání opravy, které tato oprava hotfix. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
970365Vytvoří SQL Server 2008, které byly vydány po vydání aktualizace Service Pack 1 pro SQL Server 2008
2008 Microsoft SQL Server opravy hotfix jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. K instalaci aktualizace Service Pack 1 pro SQL Server 2008, je třeba použít opravu hotfix aktualizaci Service Pack 1 pro SQL Server 2008. Ve výchozím nastavení žádné opravy hotfix, která je poskytována v aktualizace service pack pro SQL Server je součástí příští aktualizace service pack pro SQL Server.

Jak potíže obejít

Pro řešení tohoto problému, použijte jednu z následujících metod.

Metoda 1

Funkce ISNULL() odebrat z dotazu.

Poznámka:Vzhledem k tomu, že sloupce, který je v této funkci pochází z operátor JOIN, odmítne hodnoty NULL, je redundantní funkce ISNULL().

Metoda 2

Přepište dotaz tak, že plán dotazů není používat hash spojení, tiskové fronty nebo tabulce řazení. Pokud dotaz obsahuje klauzuli ORDER BY, například vytvořit skupinový nebo covering index, který obsahuje požadované řazení a obsahuje všechny požadované sloupce. Při použití této metody, nepoužívá optimalizace dotazu tabulku řazení.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Odkazy

Informace o přírůstkové obsluhovaní model pro SQL Server naleznete článku znalostní báze Microsoft Knowledge Base:
935897Přírůstkové modelu obsluhovaní je k dispozici tým serveru SQL Server dodat opravy hotfix pro nahlášené potíže


Další informace o schéma názvů pro aktualizace serveru SQL Server naleznete následující článku znalostní báze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server


Další informace o terminologii používané v aktualizacích softwaru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 981037 - Poslední aktualizace: 15. března 2010 - Revize: 1.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Klíčová slova: 
kbmt kbhotfixserver kbexpertiseadvanced kbsurveynew kbqfe kbfix KB981037 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:981037

Dejte nám zpětnou vazbu

 

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