Ispravka: „Pokušaj da se kolone za non-NULL-stanju vrednost postavite na nulu” poruka o grešci kada pokrenete upit funkcija se koristi ISNULL() da biste izabrali vrednosti koji kolone u SQL Server 2008

BUG #: 129341 (Content Maintenance)
VSTS bug number: 409769

Microsoft distribuira ispravke za Microsoft SQL Server 2008 kao jednu datoteku koja se može preuzeti. Pošto su kumulativne ispravke, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodne SQL Server 2008 popravi za javnost.

Simptomi

Razmotrite sledeći slučaj:

  • U Microsoft SQL Server 2008, pokrenete upit koji koristi funkciju ISNULL() da biste izabrali vrednosti koje su u koloni koji.

  • Tabela koja sadrži kolonu koji su spojene sa drugom tabelom u koloni koji!

  • Plan upita koje su stvorili optimizator upita koristi spoj hash, kalem ili sortiranje tabele ispod operator za spajanje .

U ovom slučaju, dobijate sledeću poruku o grešci:

MNG 681 godine, nivo 16, stanje 3, red 2Attempting da postavite kolonu non-NULL-stanju vrijednost na "null".

Uzrok

Optimizator upita određuje da kolona na koju se upućuje u funkciji ISNULL() zato koji operator za spajanje odbacuje vrednosti "null". Zatim, u plan upita, upit optimizator gura izraz koji je u funkciji " ISNULL() " ispod operator se pridruži . Pored toga, vrednost izraza može biti "null". Međutim, upit optimizator ponovo pronalaze svojstvo "nullability" za izraz. Onda, u upit plan, radne ploče koristi da sprovede hash spoju, na čekanju ili tabeli sortiranja koji sadrži izraz. Pored toga, odgovarajuća kolona u tabeli je deklarisana kao koji. Motor upit SQL Server pokušavaju da umetnete polja bez vrednosti u tabeli, kada dođe do greške.

Rešenje

Fix za ovaj problem prvi put pušten u kumulativno ažuriranje 7 za SQL Server 2008 Service Pack 1. Za više informacija o ovom paketu Kumulativna ispravka, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

979065 Paket za kumulativno ažuriranje 7 za SQL Server 2008 servisni paket 1Napomena Jer se gradi su kumulativne, svako novo izdanje Ispravka sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodne SQL Server 2008 popraviti za javnost. Preporučujemo da imate u vidu primenjujete najnovije objavljivanja ispravka koji sadrži ovu zakrpu. Za više informacija, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

970365 SQL Server 2008 gradi objavljene nakon što je pušten je SQL Server 2008 servisni paket 1Hitnih ispravki za Microsoft SQL Server 2008 su kreirani za određene servisne pakete za SQL Server. Morate primijeniti hitni popravak SQL Server 2008 servisni paket 1 za instalaciju za SQL Server 2008 Service Pack 1. Po podrazumevanim postavkama, neki hitni popravak koji je obezbeđen u servisni paket za SQL Server je uključena u novi servisni paket za SQL Server.

Rešenje

Da biste rešili ovaj problem, koristite jedan od sledećih metoda.1. metodUklonite funkciju " ISNULL() " iz upita. Napomena Jer kolona koja je u ovoj funkciji dolazi iz PRIDRUŽIVANJE operator koji odbacuje "null" vrednosti, funkcija ISNULL() je nekorisno.Metod 2Prepravi upit tako da plan upita ne koristi spoj hash, kalem ili sortiranje tabele. Na primer, ako vaš upit sadrži odredbu ORDER BY, kreirajte grupisani ili pokrivanjem indeksa koji pruža potrebnu naručivanja i uključuje sve potrebne kolone. Kada koristite ovaj metod, optimizator upita ne koristi sortiranje tabele.

Status

Microsoft je potvrdio da je ovo problem kod Microsoft proizvoda koji su navedeni u odeljku „Odnosi se na”.

Reference

Za informacije o inkrementalnom servisiranje Model za SQL Server, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

935897 Incremental Model za servisiranje je dostupna iz SQL Server tima da dostavi hitnih ispravki za prijavljenih problemaZa više informacija o imenovanju šemi ažurirane verzije SQL servera, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

822499Nova šema imenovanja za pakete za dopunu softvera Microsoft SQL ServerZa više informacija o terminologiji za ažuriranje softvera, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

824684 Opis standardne terminologije koja se koristi za opisivanje Microsoftovih softverskih ažuriranja

Author (SME): bruceye
Writer: v-vincli
Tech Reviewer: jpilov; alexek; rajneesh
Editor: v-chliao

Potrebna vam je dodatna pomoć?

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Microsoft insajdere

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Izgleda da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×