Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису 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 на тип даних " дрібних ", використовуючи функцію " литий " або " перетворити " без аргументу " стиль ", або коли значення аргументу " стиль " дорівнює 0.

  • Результат функції Cast або Convert використовується у фільтрі в ЗАПИТІ Transact-SQL.

  • Ви запускаєте запит Transact-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 Knowledge Base:

2723749 Сукупний пакет оновлень пакета 3 для SQL Server 2012Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2012 Fix Release. Корпорація Майкрософт рекомендує застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань 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 Knowledge Base:

2720425 Сукупний пакет оновлень пакета 1 для SQL Server 2008 R2 Service Pack 2Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

2730301 Випущено пакет оновлень 2 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service Pack NO2

SQL Server 2008 R2 SP1

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 7. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2 Service Pack 1, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:

2703282 Сукупний пакет оновлень пакета 7 для SQL Server 2008 R2 SP1Примітка. Оскільки пакет складається з сукупних, кожен новий випуск Fix містить всі поточні виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 R2 Service Pack 1 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань 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. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×