KB2380361 – ÅTGÄRDA: Felmeddelande när du kör den lagrade proceduren "sp_createstats" i SQL Server 2008 eller i SQL Server 2008 R2 om tabellen innehåller en icke-deterministisk beräknad kolumn

Gäller för
SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2008 R2 Standard Edition for Small Business

Microsoft distribuerar Microsoft SQL Server 2008- och Microsoft SQL Server 2008 R2-korrigeringar som en nedladdningsbar fil. Eftersom korrigeringarna är kumulativa innehåller varje ny utgåva alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare korrigeringsversionen för SQL Server 2008 eller SQL Server 2008 R2.

Symptom

Tänk dig följande scenario:

  • Du skapar en tabell som innehåller en icke-deterministisk beräknad kolumn i en SQL Server 2008- eller SQL Server 2008 R2-databas. Du kan till exempel köra följande instruktion för att skapa en tabell som innehåller en icke-deterministisk beräknad kolumn: CREATE TABLE [dbo]. [T1](
            [Födelsedatum] DATUM,
            [Ålder] AS (FLOOR(DATEDIFF(DAY,[DateOfBirth],GETDATE())/(365.0))))GO Note I den här satsen är funktionen HÄMTADATUM icke-deterministisk.

  • Du kör den lagrade proceduren sp_createstats för att förbättra prestanda.

    Obs! Den lagrade proceduren sp_createstats skapar statistik med en kolumn för alla kvalificerade kolumner i databasen

I det här scenariot misslyckas sp_createstats lagrade proceduren. Därför kan det hända att statistiken för vissa kvalificerade kolumner inte har skapats. Dessutom visas följande felmeddelande:

Obs

Msg 2729, nivå 16, status 1, rad 1

Kolumnen "Age" i tabellen "dbo.t1" kan inte användas i ett index eller statistik eller som en partitionsnyckel eftersom den är icke-deterministisk.

Orsak

Det här problemet beror på att den lagrade proceduren sp_createstats inte hoppar över de icke-deterministiska beräknade kolumnerna.

Lösning

Information om kumulativ uppdatering

SQL Server 2008 Service Pack 1

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 11 för SQL Server 2008 Service Pack 1. Om du vill veta mer om det här kumulativa uppdateringspaketet klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2413738 Kumulativ uppdateringspaket 11 för SQL Server 2008 Service Pack 1
Eftersom versionerna är kumulativa innehåller varje ny korrigeringsversion alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008-korrigeringsversionen. Microsoft rekommenderar att du installerar den senaste korrigeringsversionen som innehåller den här snabbkorrigeringen. Mer information om hur du åtgärdar det här problemet får du om du klickar på följande artikelnummer i Microsoft Knowledge Base:

970365 Snabbkorrigeringar för SQL Server 2008 som släpptes efter att SQL Server 2008 Service Pack 1 släpptesSnabbkorrigeringar för Microsoft SQL Server 2008 skapas för specifika SQL Server Service Pack-versioner. Du måste använda en snabbkorrigering för SQL Server 2008 Service Pack 1 på en installation av SQL Server 2008 Service Pack 1. Som standard ingår snabbkorrigeringar i en SQL Server Service Pack i nästa SQL Server Service Pack.

SQL Server 2008 Service Pack 2

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 1 för SQL Server 2008 Service Pack 2. Om du vill veta mer om det här kumulativa uppdateringspaketet klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2289254 Kumulativ uppdatering 1 för SQL Server 2008 Service Pack 2Note Eftersom versionerna är kumulativa innehåller varje ny korrigeringsversion alla snabbkorrigeringar och säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008-korrigeringsversionen. Vi rekommenderar att du installerar den senaste snabbkorrigeringen som innehåller den här snabbkorrigeringen. Mer information om hur du åtgärdar det här problemet får du om du klickar på följande artikelnummer i Microsoft Knowledge Base:

2402659 De SQL Server 2008-versionerna som släpptes efter att SQL Server 2008 Service Pack 2 släpptes

SQL Server 2008 Service Pack 2

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 2 för SQL Server 2008 Service Pack 2. Om du vill veta mer om det här kumulativa uppdateringspaketet klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2467239 Kumulativ uppdatering paket 2 för SQL Server 2008 Service Pack 2Note Eftersom versionerna är kumulativa innehåller varje ny korrigeringsversion alla snabbkorrigeringar och säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008-korrigeringsversionen. Microsoft rekommenderar att du installerar den senaste korrigeringsversionen som innehåller den här snabbkorrigeringen. Mer information om hur du åtgärdar det här problemet får du om du klickar på följande artikelnummer i Microsoft Knowledge Base:

2402659 Snabbkorrigeringar för SQL Server 2008 som släpptes efter att SQL Server 2008 Service Pack 2 släpptes Snabbkorrigeringar för Microsoft SQL Server 2008 skapas för specifika SQL Server Service Pack-versioner. Du måste använda en snabbkorrigering för SQL Server 2008 Service Pack 2 på en installation av SQL Server 2008 Service Pack 2. Som standard ingår snabbkorrigeringar i en SQL Server Service Pack i nästa SQL Server Service Pack.

SQL Server 2008 R2

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 4. Om du vill veta mer om hur du hämtar det här kumulativa uppdateringspaketet för SQL Server 2008 R2 klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2345451 kumulativt uppdateringspaket 4 för SQL Server 2008 R2 Obs! Eftersom versionerna är kumulativa innehåller varje ny korrigeringsversion alla snabbkorrigeringar och säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008 R2-korrigeringsversionen. Vi rekommenderar att du installerar den senaste snabbkorrigeringen som innehåller den här snabbkorrigeringen. Mer information om hur du åtgärdar det här problemet får du om du klickar på följande artikelnummer i Microsoft Knowledge Base:

981356 De SQL Server 2008 R2-versionerna som släpptes efter att SQL Server 2008 R2 släpptes

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Referenser

Mer information om deterministiska och icke-deterministiska funktioner finns på följande MSDN-webbplats (Microsoft Developer Network):

Allmän information om deterministiska och icke-deterministiska funktioner Mer information om den lagrade proceduren sp_createstats finns på följande MSDN-webbplats:

Allmän information om den lagrade proceduren "sp_createstats" Transact-SQL Mer information om beräknade kolumner finns på följande MSDN-webbplats:

Allmän information om beräknade kolumner Om du vill veta mer om modellen för inkrementell service för SQL Server klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

935897 En stegvis servicemodell är tillgänglig från SQL Server-teamet för att leverera snabbkorrigeringar för rapporterade problem

Om du vill veta mer om namnschemat för SQL Server uppdateringar klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

822499 Nytt namnschema för Microsoft SQL Server programuppdateringspaketOm du vill veta mer om terminologi för programvaruuppdateringar klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

824684 Beskrivning av standardterminologin som används för att beskriva Microsofts programuppdateringar