Applies ToSQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

Microsoft distribuira ispravke za Microsoft SQL Server 2008 R2 servisni paket 1 (SP1) kao jednu datoteku koja se može preuzeti. Pošto su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje sql Server 2008 R2 servisnog paketa 1 (SP1).

Simptomi

Razmotrite sledeći scenario:

  • Imate kolonu tipa podataka tipa podataka datetimeoffset u tabeli u sistemu Microsoft SQL Server 2008 R2 ili Microsoft SQL Server 2012.

  • Indeks kreirate u koloni "Datumoffset".

  • Tip podataka datetimeoffset konvertujete u malidatetime tip podataka pomoću funkcije CAST ili CONVERT bez argumenta stila ili kada je vrednost argumenta stila 0.

  • Rezultat funkcije CAST ili CONVERT se koristi u filteru u Transact-SQL upitu.

  • Pokrenete Transact-SQL upit.

U ovom scenariju, rezultat koji je vratio upit je netačan jer filter ne radi ispravno. Na primer, pretpostavimo da kolona "Datum" koja je nazvana "Datum" sadrži sledeće vrednosti:

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

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

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

Pokrenete sledeći upit:

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

Rezultat upita vraća samo jedan red. Međutim, očekivani rezultat bi trebalo da vrati redove za sve tri vrednosti.

Rešenje

Kumulativne informacije o ažuriranju

SQL Server 2012

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 3 za SQL Server 2012. Za više informacija o ovom paketu kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2723749 Kumulativni paket ispravki 3 za SQL Server 2012Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje ispravki za SQL Server 2012. Microsoft preporučuje da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2692828 SQL Server 2012 builds koji su objavljeni nakon što je SQL Server 2012 objavljen Morate primeniti hitnu ispravku za SQL Server 2012 na instalaciju sistema SQL Server 2012.

SQL Server 2008 R2 servisni paket 2

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 1 za SQL Server 2008 R2 servisni paket 2. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2720425 Kumulativni paket ispravki 1 za SQL Server 2008 R2 servisni paket 2Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje SQL Server 2008 R2 ispravke. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2730301 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 2 was released

SQL Server 2008 R2 SP1

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 7. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki za SQL Server 2008 R2 servisni paket 1 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2703282 Kumulativni paket ispravki 7 za SQL Server 2008 R2 SP1Napomena Pošto su verzije kumulativne, svako novo izdanje za ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodno izdanje sql Server 2008 R2 servisnog paketa 1. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2567616 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 SP1 was released

Više informacija

Da biste reprodukovali problem, sledite ove korake:

  1. Pokrenite sledeći upit da biste kreirali tabelu sa kolonom za datum i umetnuli neke zapise: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. Pokrenite sledeći upit i možete da vidite da su sve tri vrednosti ispravno navedene u vraćenom rezultatu:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. Pokrenite sledeći upit da biste kreirali indeks u koloni "dto" i ponovili isti upit: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. Ponovo pokrenite upit u koraku 2. Ovog puta, upit vraća samo jedan red.

  5. Pokrenite sledeći upit da biste izbrisali indeks i tabelu koju ste kreirali:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

Reference

Za više informacija o funkcijama CAST i CONVERT posetite sledeću MSDN Web lokaciju:

Opšte informacije o funkcijama CAST i CONVERT u sistemu SQL Server

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.