FIX: Foutbericht 'Probeert een niet-NULL-kunnen kolom waarde instellen op NULL' bij het uitvoeren van een query die gebruikt de functie ISNULL() een kolom Null-waarden selecteren in SQL Server 2008

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 981037 - Bekijk de producten waarop dit artikel van toepassing is.
Microsoft distribueert oplossingen voor Microsoft SQL Server 2008 als één downloadbaar bestand. Aangezien de oplossingen cumulatief zijn, bevat elke nieuwe versie de hotfixes en de beveiligingscorrecties die opgenomen in de vorige SQL Server 2008 zijn release opgelost.
Alles uitklappen | Alles samenvouwen

Symptomen

Het volgende scenario:
  • In Microsoft SQL Server 2008, voert u een query gebruikt deISNULL()de functie voor het selecteren van waarden in een kolom Null-waarden.
  • De tabel de kolom Null-waarden bevat is met een andere tabel in de kolom Null-waarden gekoppeld.
  • Het queryplan door Query Optimizer gemaakt gebruikt een hash-join, een wachtrij of een tabel sorteren hieronder deJOINoperator.
In dit scenario wordt het volgende foutbericht weergegeven:
Msg 681, niveau 16 staat 3, regel 2
Probeert een niet-NULL-kunnen kolom waarde instellen op NULL.

Oorzaak

Query Optimizer bepaalt dat de kolom waarnaar wordt verwezen in deISNULL()functie is niet null omdat de join-operator NULL-waarden weigert. In het queryplan vervolgens duwt Query Optimizer de expressie in deISNULL()functie hieronder deJOINoperator. Bovendien kan de waarde van de expressie NULL zijn. Query Optimizer heeft echter niet de eigenschap nullability voor de expressie re-derive. Klik in het queryplan een werktabel gebruikt voor het implementeren van de hash-join, de wachtrij of tabel sorteren dat de expressie bevat. Bovendien de corresponderende kolom in de tabel aangegeven als niet-null-waarden. Wanneer de SQL Server-query-engine probeert NULL-waarden in de tabel invoegt, wordt de fout optreedt.

Oplossing

De correctie voor dit probleem werd eerst uitgebracht in 7 cumulatieve Update voor SQL Server 2008 Service Pack 1. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over dit cumulatieve updatepakket:
979065Cumulatieve updatepakket 7 voor SQL Server 2008 Service Pack 1
OpmerkingOmdat de builds cumulatief zijn, elke nieuwe release correctie bevat alle hotfixes en de beveiligingscorrecties die opgenomen in de vorige SQL Server 2008 zijn release opgelost. Wij raden de meest recente fix release waarin deze hotfix toepast. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
970365SQL Server 2008 bouwt die zijn uitgebracht na Service Pack 1 voor SQL Server 2008 is uitgebracht
Microsoft SQL Server 2008 hotfixes gemaakt voor specifieke SQL Server servicepacks. U moet een hotfix voor SQL Server 2008 Service Pack 1 toepassen op een installatie van SQL Server 2008 Service Pack 1. De hotfix die in SQL Server servicepack is opgenomen in het volgende servicepack voor SQL Server.

Workaround

Dit probleem omzeilen door een van de volgende methoden te gebruiken.

Methode 1

Verwijder deISNULL()functie van de query.

OpmerkingOmdat de kolom in deze functie van komt deJOINoperator NULL-waarden, weigert deISNULL()functie is overbodig.

Methode 2

Herschrijf de query zodat het queryplan niet met een hash-join, een wachtrij of een tabel sorteren. Als de query een ORDER BY-component bevat, maken een covering of geclusterde index die vereist bestellen en alle vereiste kolommen bevat. Wanneer u deze methode gebruikt, wordt in Query Optimizer een tabel sorteren niet gebruiken.

Status

Microsoft heeft bevestigd dat dit probleem in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op' is.

Referenties

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor informatie over de incrementele Servicing-Model voor SQL Server:
935897Een incrementele Servicing-Model is beschikbaar vanaf de SQL Server-team leveren hotfixes voor gemelde problemen


Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over het naamgevingsschema voor SQL Server-updates:
822499Nieuw naamgevingsschema voor software-updatepakketten voor Microsoft SQL Server


Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over terminologie voor software-update:
824684Beschrijving van de standaardterminologie die wordt gebruikt om software-updates voor Microsoft te beschrijven

Eigenschappen

Artikel ID: 981037 - Laatste beoordeling: zaterdag 19 maart 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Trefwoorden: 
kbhotfixserver kbexpertiseadvanced kbsurveynew kbqfe kbfix kbmt KB981037 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:981037

Geef ons feedback

 

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