דלג לתוכן הראשי
היכנס דרך Microsoft
היכנס או צור חשבון.
שלום,
בחר חשבון אחר.
יש לך חשבונות מרובים
בחר את החשבון שברצונך להיכנס באמצעותו.

Microsoft מפיצה את Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) כקובץ הניתן להורדה. מאחר שהתיקונים מצטברים, כל מהדורה חדשה מכילה את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו במהדורת התיקון הקודמת של SQL Server 2008 R2 Service Pack 1 (SP1).

תופעות

שקול את התרחיש הבא:

  • יש לך עמודת סוג נתונים של datetimeoffset בטבלה ב-Microsoft sql Server 2008 R2 או ב-Microsoft sql server 2012.

  • אתה יוצר אינדקס בעמודה datetimeoffset .

  • אתה ממיר את סוג הנתונים datetimeoffset לסוג נתונים של smalldatetime באמצעות הפונקציה CAST או convert ללא הארגומנט סגנון , או כאשר הערך של ארגומנט הסגנון הוא 0.

  • התוצאה של הפונקציה CAST או CONVERT נמצאת בשימוש במסנן בשאילתת Transact-SQL.

  • אתה מפעיל את שאילתת ה-Transact-SQL.

בתרחיש זה, התוצאה המוחזרת על-ידי השאילתה שגויה מכיוון שהמסנן אינו פועל כהלכה. לדוגמה, נניח שהעמודה datetimeoffset בשם "Date" מכילה את הערכים הבאים:

  • 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הערה מאחר שבונה הגירסאות מצטבר, כל מהדורת תיקון חדשה מכילה את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו במהדורת התיקון הקודמת של SQL Server 2012. Microsoft ממליצה לשקול להחיל את מהדורת התיקון העדכנית ביותר המכילה תיקון חם זה. לקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר ב-Microsoft Knowledge Base:

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הערה מאחר שבונה הגירסאות מצטבר, כל מהדורת תיקון חדשה מכילה את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללים במהדורת התיקון הקודמת של SQL Server 2008 R2. אנו ממליצים לשקול להחיל את הגירסה העדכנית ביותר שמכילה את התיקון האחרון שמכיל תיקון חם זה. לקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר ב-Microsoft Knowledge Base:

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 Knowledge Base:

2703282 חבילת עדכון מצטבר 7 עבור SQL Server 2008 R2 SP1הערה מאחר ש-build מצטבר, כל מהדורת תיקון חדשה מכילה את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו במהדורת התיקון הקודמת של SQL Server 2008 R2 Service Pack 1. אנו ממליצים לשקול להחיל את הגירסה העדכנית ביותר שמכילה את התיקון האחרון שמכיל תיקון חם זה. לקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר ב-Microsoft Knowledge Base:

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. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

תודה על המשוב!

×