ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

Microsoft กระจาย Microsoft SQL Server ๒๐๐๘ R2 Service Pack 1 (SP1) เป็นไฟล์ที่สามารถดาวน์โหลดได้หนึ่งไฟล์ เนื่องจากการแก้ไขจะสะสมแต่ละรุ่นใหม่มีโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ใน SQL Server ๒๐๐๘ R2 Service Pack 1 (SP1) เวอร์ชันก่อนหน้านี้ได้รับการแก้ไขแล้ว

อาการ

พิจารณาสถานการณ์ต่อไปนี้:

  • คุณมีคอลัมน์ชนิดข้อมูล datetimeoffset ในตารางใน Microsoft sql Server ๒๐๐๘ R2 หรือใน Microsoft sql server ๒๐๑๒

  • คุณสร้างดัชนีบนคอลัมน์datetimeoffset

  • คุณแปลงชนิดข้อมูลdatetimeoffsetเป็นชนิดข้อมูลsmalldatetimeโดยใช้ฟังก์ชันเพี้ยนหรือแปลงโดยไม่มีอาร์กิวเมนต์สไตล์หรือเมื่อค่าของอาร์กิวเมนต์สไตล์เป็น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 ๒๐๑๒ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแพคเกจโปรแกรมปรับปรุงที่สะสมนี้ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

๒๗๒๓๗๔๙ แพคเกจโปรแกรมปรับปรุงที่สะสม3สำหรับ SQL Server ๒๐๑๒หมายเหตุ เนื่องจาก builds สะสมแต่ละรุ่นของการแก้ไขใหม่มีโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ใน SQL Server ๒๐๑๒รุ่นก่อนหน้านี้ Microsoft ขอแนะนำให้คุณพิจารณาใช้การแก้ไขการแก้ไขล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:

๒๖๙๒๘๒๘ SQL Server ๒๐๑๒รุ่นที่เผยแพร่หลังจากที่มีการเผยแพร่ SQL Server ๒๐๑๒ คุณต้องนำโปรแกรมแก้ไขด่วนของ SQL Server ๒๐๑๒ไปใช้กับการติดตั้ง SQL Server ๒๐๑๒

SQL Server ๒๐๐๘ R2 Service Pack 2

การแก้ไขสำหรับปัญหานี้ถูกนำออกใช้ครั้งแรกใน1การอัปเดตที่สะสมสำหรับ SQL Server ๒๐๐๘ R2 Service Pack 2 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงที่สะสมนี้ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

๒๗๒๐๔๒๕ แพคเกจโปรแกรมปรับปรุงที่สะสม1สำหรับ SQL Server ๒๐๐๘ R2 Service Pack 2หมายเหตุ เนื่องจาก builds สะสมแต่ละรุ่นของการแก้ไขใหม่ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการแก้ไขรุ่นก่อนหน้าของ SQL Server ๒๐๐๘ R2 เราขอแนะนำให้คุณพิจารณาใช้การแก้ไขการแก้ไขล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:

๒๗๓๐๓๐๑ รุ่นของ SQL Server ๒๐๐๘ R2 รุ่นที่เผยแพร่หลังจาก SQL Server ๒๐๐๘ R2 Service Pack 2 ถูกเผยแพร่แล้ว

SQL Server ๒๐๐๘ R2 SP1

การแก้ไขสำหรับปัญหานี้ถูกนำออกใช้ครั้งแรกใน7การอัปเดตที่สะสม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงที่สะสมนี้สำหรับ SQL Server ๒๐๐๘ R2 Service Pack 1 ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

๒๗๐๓๒๘๒ แพคเกจโปรแกรมปรับปรุงที่สะสม7สำหรับ SQL Server ๒๐๐๘ R2 SP1หมายเหตุ เนื่องจาก builds สะสมแต่ละรุ่นของการแก้ไขใหม่ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ใน SQL Server ๒๐๐๘ R2 Service Pack 1 เวอร์ชันก่อนหน้า เราขอแนะนำให้คุณพิจารณาใช้การแก้ไขการแก้ไขล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:

๒๕๖๗๖๑๖ รุ่นของ SQL Server ๒๐๐๘ R2 รุ่นที่เผยแพร่หลังจากที่มีการเผยแพร่ SQL Server ๒๐๐๘ 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 และแปลงให้ไปที่เว็บไซต์ MSDN ต่อไปนี้:

ข้อมูลทั่วไปเกี่ยวกับฟังก์ชัน CAST และแปลงใน SQL Server

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

คุณพึงพอใจกับคุณภาพภาษาเพียงใด
สิ่งที่ส่งผลต่อประสบการณ์ใช้งานของคุณ
เมื่อกดส่ง คำติชมของคุณจะถูกใช้เพื่อปรับปรุงผลิตภัณฑ์และบริการของ Microsoft ผู้ดูแลระบบ IT ของคุณจะสามารถรวบรวมข้อมูลนี้ได้ นโยบายความเป็นส่วนตัว

ขอบคุณสำหรับคำติชมของคุณ!

×