Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Microsoft izplata Microsoft SQL Server 2008 R2 1. servisa pakotnes (SP1) labojumus kā vienu lejupielādējamo failu. Tā kā labojumi ir kumulatīvi, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2008 R2 1. servisa pakotnes (SP1) labošanas laidienā.

Simptomi

Iedomājieties šādu scenāriju:

  • Jums ir kolonna datetimeoffset datu tips tabulā programmā Microsoft sql Server 2008 R2 vai Microsoft sql Server 2012.

  • Jūs izveidojat indeksu kolonnā datetimeoffset .

  • Datetimeoffset datu tips tiek pārvērsts par datu tipu datu tips smalldatetime , izmantojot funkciju cast vai convert , nelietojot argumentu stils , vai ja argumenta stils vērtība ir 0.

  • Funkcijas cast vai convert rezultāts tiek izmantots filtrā Transact-SQL vaicājumā.

  • Palaižot Transact-SQL vaicājumu.

Šajā scenārijā vaicājuma atgrieztais rezultāts ir nepareizs, jo filtrs darbojas nepareizi. Piemēram, pieņemsim, ka kolonnā datetimeoffset , kuras nosaukums ir "date", ir šādas vērtības:

  • 2011-05-21 23:00:00 -01:00

  • 2011-05-21 23:00:00 +00:00

  • 2011-05-21 23:00:00 +01:00

Palaidiet šādu vaicājumu:

SELECT Date FROM TestTable WHERE CAST(Date AS smalldatetime)= '2011-05-21 23:00:00'

Vaicājuma rezultāts atgriež tikai vienu rindu. Taču gaidītajam rezultātam jāatgriež rindas visām trim vērtībām.

Risinājums

Kumulatīvās atjaunināšanas informācija

SQL Server 2012

Šīs problēmas labojums pirmo reizi tika izlaists SQL Server 2012 kumulatīvajā atjauninājumā 3. Lai iegūtu papildinformāciju par šo kumulatīvās atjaunināšanas pakotni, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2723749 Kumulatīvās atjaunināšanas pakotne 3 SQL Server 2012Piezīme. Tā kā būvējums ir kumulatīvs, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2012 labošanas laidienā. Microsoft iesaka, ka apsveriet iespēju lietot jaunāko labojumu laidienu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2692828 SQL Server 2012 būvējumi, kas tika izlaisti pēc tam, kad tika izlaists SQL Server 2012 SQL Server 2012 labojumfails ir jālieto SQL Server 2012.

SQL Server 2008 R2 2. servisa pakotne

Šīs problēmas labojums pirmo reizi tika izlaists SQL Server 2008 R2 2. servisa pakotnei. Lai iegūtu papildinformāciju par to, kā iegūt šo kumulatīvo atjaunināšanas pakotni, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2720425 Kumulatīvās atjaunināšanas pakotne 1 SQL Server 2008 R2 2. servisa pakotneiPiezīme. Tā kā būvējums ir kumulatīvs, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2008 R2 labošanas laidienā. Iesakām apsvērt jaunāko labojumu laidienu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2730301 SQL Server 2008 R2 būvējumi, kas tika izlaisti pēc tam, kad tika izlaista SQL Server 2008 R2 2. servisa pakotne

SQL Server 2008 R2 SP1

Šīs problēmas labojums pirmo reizi tika izlaists kumulatīvajā atjaunināšanā 7. Lai iegūtu papildinformāciju par to, kā iegūt šo kumulatīvo atjaunināšanas pakotni SQL Server 2008 R2 1. servisa pakotnei, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2703282 Kumulatīvās atjaunināšanas pakotne SQL Server 2008 R2 SP1Piezīme. Tā kā būvējums ir kumulatīvs, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2008 R2 1. servisa pakotnē. Iesakām apsvērt jaunāko labojumu laidienu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2567616 SQL Server 2008 R2 būvējumi, kas tika izlaisti pēc tam, kad tika izlaists SQL Server 2008 R2 SP1

Papildinformācija

Lai reproducētu problēmu, veiciet tālāk norādītās darbības.

  1. Izpildiet šādu vaicājumu, lai izveidotu tabulu ar kolonnu datetimeoffset un ievietotu dažus ierakstus.CREATE TABLE #TestTimeZones (dto datetimeoffset(0)); GO INSERT INTO #TestTimeZones(dto) VALUES ('2011-05-21 23:00:00 -01:00'), ('2011-05-21 23:00:00 +00:00'), ('2011-05-21 23:00:00 +01:00'); GO

  2. Palaidiet tālāk norādīto vaicājumu, un jūs varat redzēt, ka atgriešanas rezultāts ir pareizi uzskaitītas visas trīs vērtības:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. Izpildiet šādu vaicājumu, lai izveidotu indeksu kolonnā "DTO" un atkārtotu to pašu vaicājumu:CREATE INDEX IX_testTimeZones_Dto ON #TestTimeZones(dto); GO -- Repeat the same query DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withIndex FROM #TestTimeZones WHERE CAST(dto A smalldatetime)=@t; GO

  4. Vēlreiz izpildiet vaicājumu 2. darbībā. Šoreiz vaicājums atgriež tikai vienu rindu.

  5. Palaidiet tālāk norādīto vaicājumu, lai dzēstu indeksu un izveidoto tabulu:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

Atsauces

Lai iegūtu papildinformāciju par funkcijām CAST un CONVERT, dodieties uz šādu MSDN tīmekļa vietni:

Vispārēja informācija par funkcijām CAST un CONVERT SQL Server

Statusa

Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×