Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Microsoft разпространява Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) поправя като един файл за изтегляне. Тъй като корекциите са кумулативни, всяка нова версия съдържа всички спешни корекции и всички корекции на защитата, които са включени в предишния SQL Server 2008 R2 Service Pack 1 (SP1) Fix Release.

Симптоми

Обмислете следния сценарий:

  • Имате колона за тип данни datetimeoffset в таблица в Microsoft sql Server 2008 R2 или в Microsoft sql Server 2012.

  • Създавате индекс в колоната datetimeoffset .

  • Можете да преобразувате типа данни datetimeoffset в smalldatetime данни с помощта на функцията Cast или Convert без аргумента за стил или когато стойността на аргумента за стил е 0.

  • Резултатът от функцията Cast или Convert се използва във филтър в заявка за преговаряне – SQL.

  • Изпълнявате заявката за преговаряне.

В този случай резултатът, върнат от заявката, е грешен, защото филтърът не работи правилно. Например да предположим, че колоната datetimeoffset , която е с име "дата", съдържа следните стойности:

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

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

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

Изпълнявате следната заявка:

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

Резултатът от заявката връща само един ред. Обаче очакваните резултати трябва да връщат редове и за трите стойности.

Решение

Информация за сборна актуализация

SQL Server 2012

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 3 за SQL Server 2012. За повече информация относно този пакет с кумулативна актуализация щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

2723749 Кумулативна актуализация на пакет 3 за SQL Server 2012Забележка Тъй като компилациите са кумулативни, всяко ново издание за корекция съдържа всички актуални корекции и всички корекции на защитата, които са били включени при предишното издание на SQL Server 2012 Fix. Microsoft препоръчва да обмислите прилагането на най-новото съобщение за корекция, което съдържа тази спешна корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2692828 SQL Server 2012 компилации, които са издадени след издаването на SQL Server 2012 Трябва да приложите актуална корекция за SQL Server 2012 към инсталация на SQL Server 2012.

SQL Server 2008 R2 Service Pack 2

Корекцията за този проблем е издадена за първи път в сборна актуализация 1 за SQL Server 2008 R2 Service Pack 2. За повече информация как да получите тази сборна актуализация, щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

2720425 Кумулативна актуализация на пакета 1 за SQL Server 2008 R2 Service Pack 2Забележка Тъй като компилациите са кумулативни, всяко ново издание за корекция съдържа всички поправки и всички корекции на защитата, които са били включени при предишното издание на SQL Server 2008 R2. Препоръчваме ви да обмислите прилагането на най-новото съобщение за корекция, което съдържа тази спешна корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2730301 SQL Server 2008 R2 изгражда, които са издадени след SQL Server 2008 R2 Service Pack 2 е издадена

SQL Server 2008 R2 SP1

Корекцията за този проблем е издадена за първи път в сборна актуализация 7. За повече информация как да получите тази кумулативна актуализация на пакета за SQL Server 2008 R2 Service Pack 1, щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

2703282 Кумулативна актуализация на пакета 7 за SQL Server 2008 R2 SP1Забележка Тъй като компилациите са кумулативни, всяко ново съобщение за корекция съдържа всички поправки и всички корекции на защитата, които са включени в предишния SQL Server 2008 R2. Препоръчваме ви да обмислите прилагането на най-новото съобщение за корекция, което съдържа тази спешна корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2567616 SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2 SP1

Повече информация

За да възпроизведете проблема, изпълнете следните стъпки:

  1. Изпълнете следната заявка, за да създадете таблица с datetimeoffset колона и за да вмъкнете някои записи: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. Изпълнете следната заявка и можете да видите, че и трите стойности са изредени правилно във върнатия резултат:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. Изпълнете следната заявка, за да създадете индекс на колоната "DTO" и да повторите една и съща заявка: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. Изпълнете заявката отново в стъпка 2. Този път заявката връща само един ред.

  5. Изпълнете следната заявка, за да изтриете индекса и таблицата, която сте създали:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

Препратки

За повече информация относно функциите за CAST и CONVERT отидете на следния уеб сайт на MSDN:

Обща информация за функциите CAST и CONVERT в SQL Server

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×