วิธีการจัดเตรียม SQL Server 2005 และ SQL Server 2000 สำหรับการเปลี่ยนแปลงการปรับเวลาตามฤดูกาลใน 2007

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 931975 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

บทนำ

ในเดือน 2005 สิงหาคม Congress S. U. ผ่านดำเนินการนโยบายพลังงาน การดำเนินการนี้เปลี่ยนวันเริ่มต้นและวันสิ้นสุดของการปรับบันทึกเวลา (เวลา) ตามกาล เมื่อดำเนินการนี้ไปเป็นผลใน 2007 เวลาจะเริ่มต้นสามสัปดาห์ก่อนหน้า และจะสิ้นสุดหนึ่งสัปดาห์หลังจากเมื่อคุณเริ่ม traditionally ต้น และสิ้นสุด โดยเฉพาะอย่างยิ่ง เวลาจะเริ่มต้นเวลา 2:00 น.ในวันอาทิตย์ที่สองในมีนาคม และจะสิ้นสุด 2:00 น.ในวันอาทิตย์แรกในเดือนพฤศจิกายน

ตารางต่อไป summarizes การเปลี่ยนแปลงการปรับเวลาตามฤดูกาลใน 2007
ยุบตารางนี้ขยายตารางนี้
วันที่เริ่มต้นเมื่อเวลาก่อนหน้านี้แล้ววันที่เมื่อเวลาที่เริ่มต้นใน 2007วันที่สิ้นสุดเมื่อเวลาก่อนหน้านี้แล้ววันที่เมื่อเวลาที่สิ้นสุดใน 2007
วันอาทิตย์แรกในวันวันอาทิตย์ที่สองในมีนาคมวันอาทิตย์สุดท้ายในตุลาคมวันอาทิตย์แรกในเดือนพฤศจิกายน
จะมีการ 1 เมษายน 200711 มีนาคม 2007จะได้รับ 28 ตุลาคม 20074 พฤศจิกายน 2007
บทความนี้อธิบายถึงวิธีการจัดเตรียม Microsoft SQL Server 2005 และ Microsoft SQL Server 2000 สำหรับการเปลี่ยนแปลงเวลาใน 2007

ข้อมูลเพิ่มเติม

การดำเนินการที่คุณต้องดำเนินการ

ถ้าคุณมีการติดตั้งบนคอมพิวเตอร์ที่มีการกำหนดค่าสำหรับการปรับปรุงเวลาอัตโนมัติ SQL Server และโซนเวลาของคอมพิวเตอร์ตามการเปลี่ยนแปลงไปยังเวลาใน 2007 คุณต้องจัดทำการดำเนินการต่อไปนี้:
  • ติดตั้งการปรับปรุงของ Windows ที่ได้อธิบายไว้ในบทความฐานความรู้ของ Microsoft 924840สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
    924840รุ่นทดสอบของ 2007 Global Time Zone Update สำหรับ Windows พร้อมใช้งานแล้ว
  • ถ้าคุณมีการให้บริการ SQL Server แจ้งเตือนการติดตั้งอยู่บนเครื่องคอมพิวเตอร์ ติดตั้งการปรับปรุงที่อธิบายไว้ในบทความฐานความรู้ของ Microsoft 931815สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
    931815ปรับปรุงโซนเวลาของ 2007 สำหรับ บริการการแจ้งเตือน SQL Server 2005 และ บริการการแจ้งเตือน SQL Server 2000
  • คุณไม่มีการใช้โปรแกรมปรับปรุงเฉพาะสำหรับ SQL Server เพื่อให้แน่ใจว่า SQL Server ทำงานอย่างถูกต้อง อย่างไรก็ตาม คุณต้องปรับปรุงระบบปฏิบัติการ นอกจากนี้ คุณต้องปรับปรุงผลิตภัณฑ์และโปรแกรมประยุกต์ที่ทำงานกับ SQL Server ผลิตภัณฑ์และแอปพลิเคชันเหล่านี้อาจรวมถึงบริการการแจ้งเตือน Windows SharePoint Services, Microsoft CRM และอื่น ๆ สำหรับรายการทั้งหมดของการปรับปรุงที่คุณต้องใช้สำหรับผลิตภัณฑ์อื่น ๆ ของ Microsoft แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:
    http://support.microsoft.com/gp/cp_dst

การใช้งานเวลาของ sql Server และการรายงาน

ใน SQL Server 2005 และ ใน SQL Server 2000 เอ็นจินการฐานข้อมูล SQL Server ใช้แบบฟอร์มสองต่อไปนี้ของตัวจับเวลาในการสร้างข้อมูลเวลา:
  • ตัวจับเวลา high-resolution
  • ตัวจับเวลา low-resolution
ในตัวจับเวลา high-resolution ความละเอียดของตัวจับเวลาที่ใช้ในคำสั่งในการอ่านบันทึกเวลาของเวลาเคาน์เตอร์ (RDTSC) ของ CPU ในตัวจับเวลา low-resolution ความละเอียดของตัวจับเวลาจะขึ้นอยู่กับGetTickCountฟังก์ชันใน Windows API ของ Microsoft

พื้นหลังของตัวจับเวลาที่ใช้งานและคอมโพเนนต์ระบบที่สำคัญต่าง ๆ อาศัย timers เหล่านี้สำหรับการทำงานถูกต้อง เนื่องจาก timers เหล่านี้ทำงานเป็นหน่วยวัดที่สัมพันธ์กันจากเวลาระบุ คอมโพเนนต์ภายในและภายในกิจกรรมจะไม่ได้รับผลจากการเปลี่ยนแปลงไปยังเวลาใน 2007

ตัวอย่างเช่น คุณทำงานที่เกี่ยวข้องกับกิจกรรมใช้ตัวจับเวลาต่อไปนี้หรือส่วนประกอบที่ขึ้นอยู่กับตัวจับเวลา:
  • คอมโพเนนต์ของระบบเช่นตัวเขียน lazy ตรวจสอบล็อก และจอภาพของตัวจัดกำหนดการ
  • งานเบื้องหลังเช่นการล้างข้อมูลที่เป็นโกสต์และการย่อขนาดอัตโนมัติ
  • ทรัพยากร Time-out ใช้เช่นการล็อกและ latches
  • กิจกรรมที่กำหนดเวลาไว้เช่นงานของบริษัทตัวแทนของเซิร์ฟเวอร์ SQL และแผนการบำรุงรักษา
  • คำชี้แจงของระบบเช่นนั้นwaitforงบดุล
sql Server จะสร้างข้อมูลเวลาที่ทำพร้อมใช้งานคอมโพเนนต์ภายนอกและแอปพลิเคชัน ข้อมูลในเวลานี้ถูกดึงจากระบบปฏิบัติการ Windows ดังนั้น ข้อมูลเวลาไม่ถูกต้องตราบเท่าที่ระบบปฏิบัติการส่งกลับค่าเวลาที่ถูกต้อง

ตัวอย่างเช่น คุณทำงานที่เกี่ยวข้องกับคอมโพเนนต์ต่อไปนี้ที่ภายนอกและโปรแกรมประยุกต์:
  • SQL Server Profiler หรือ SQL Profiler คอลัมน์เหตุการณ์เช่นนี้เวลาการเริ่มต้นคอลัมน์เวลาสิ้นสุดคอลัมน์ และระยะเวลาคอลัมน์สำหรับเหตุการณ์ที่แตกต่างกัน
  • ข้อมูลเวลาที่รายงานในบันทึกเหตุการณ์ต่าง ๆ เช่น SQL Server Errorlog แฟ้มบันทึกเหตุการณ์ และตารางระบบ
  • ระบบทำเช่นนั้นGetDateฟังก์ชันและGetUtcDateฟังก์ชัน
พิจารณาสถานการณ์ต่อไปนี้: คุณสามารถสร้างสืบค้นกลับของ SQL Server ด้วย SQL Server Profiler หรือ Profiler SQL ระเบียนการสืบค้นกลับแบบสอบถามที่เริ่มการทำงานก่อนเวลา 2007 มีนาคมเวลาเปลี่ยน และทำงานเสร็จสมบูรณ์หลังจากการเปลี่ยนแปลงเวลา 2007 มีนาคมเวลา ในสถานการณ์สมมตินี้ ข้อมูลเวลาที่ไม่ถูกต้อง และจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงเวลา
ต่อไปนี้จะแสดงผลตัวอย่างของการสืบค้นกลับที่ใช้งาน:
EventSequence  EventClass         TextData              StartTime                EndTime                  Duration
156            Sql:StmtStarting   Select * From Table1  2007-03-11 01:59:57.187
157            Sql:StmtCompleted  Select * From Table1  2007-03-11 01:59:57.187  2007-03-11 03:00:07.187  9987
ในทำนองเดียวกัน ต่อไปนี้จะแสดงผลตัวอย่างของการสืบค้นกลับที่จะบันทึกแบบสอบถามในระหว่างการเปลี่ยนแปลงเวลา 2007 พฤศจิกายนเวลา:
EventSequence  EventClass         TextData              StartTime                EndTime                  Duration
178            Sql:StmtStarting   Select * From Table1  2007-11-04 01:59:54.967
179            Sql:StmtCompleted  Select * From Table1  2007-11-04 01:59:54.967  2007-11-04 01:00:05.030  10055

ทราบเกี่ยวกับเวลาของ sql server ออกที่ไม่ระบุการเปลี่ยนแปลงเวลาใน 2007

ไม่มี DateDiff DateAdd วันและเวลาฟังก์ชันและเวลาที่ทราบ

When you use Transact-SQL statements to perform time calculations that are based on system-provided date and time functions, you must carefully investigate the statements. Specifically, if you have written DST times in hard code in the application logic, theDateDiffและDateAddsystem functions are not DST aware.

For example, an application runs the following statements to calculate the time difference. The calculation is based on the old DST time. Notice that under the new DST system in 2007, 2007-03-11 is the starting date of DST. However, under the old DST system, 2007-04-01 would be the starting date of DST.
DECLARE @starttime datetime
DECLARE @endtime datetime
SELECT @starttime = GetDate() -- returns '2007-03-11 1:59:50.000'
WAITFOR DELAY '00:00:30'
SELECT @endtime = GetDate()   –- returns '2007-03-11 3:00:20.000' 

If @starttime < '2007-04-01 3:00:00.000' And 
   @endtime > '2007-04-01 1:59:59.000'
	SELECT (cast((DATEDIFF(s, @starttime, @endtime)) as int) - 3600) AS TimeDiffInSecs
Else
	SELECT cast((DATEDIFF(s, @starttime, @endtime)) as int) AS TimeDiffInSecs

Go
When you run the statements, you receive the following result:
TimeDiffInSecs 
-------------- 
3,630
เนื่องจากการDateDiffsystem function is not DST aware, the statements return 3,630 seconds instead of 30 seconds.

To correct the time calculation in such scenarios, use theGetUtcDatefunction instead of theGetDateฟังก์ชัน กระบวนการGetUtcDatefunction returns the current UTC time. The current UTC time is derived from the current local time together with the time zone setting in the operating system of the computer on which SQL Server is running.

The following are modified statements that work correctly:
/*-------------------------------------------------------
	  GetDate()		  GetUtcDate()
datetime  2007-03-11 1:59:50.000  2007-03-11 09:59:50.000
datetime  2007-03-11 3:00:20.000  2007-03-11 10:00:20.000
-------------------------------------------------------*/
DECLARE @starttime datetime
DECLARE @endtime datetime
SELECT @starttime = GetUtcDate() -- returns '2007-03-11 9:59:50.000'
WAITFOR DELAY '00:00:30'
SELECT @endtime = GetUtcDate()   –- returns '2007-03-11 10:00:20.000'  
SELECT DATEDIFF (s, @starttime, @endtime) AS TimeDiffInSecs
Go
When you run the statements, you receive the correct result as follows:
TimeDiffInSecs 
-------------- 
30

Effect of the DST end date on scheduled SQL Server Agent jobs

พิจารณาสถานการณ์ต่อไปนี้: You have a scheduled SQL Server Agent job that prints current local time. The job runs every 15 minutes. When the DST change occurs in November 2007, SQL Server Agent automatically tracks the DST change. SQL Server Agent bases its tracking on the operating system and updates the next scheduled run of the job correctly.

The following is the sample output of the job:
Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 01:30:00
CurrentTime    2007-03-11 01:30:00.343

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 01:45:00
CurrentTime    2007-03-11 01:45:00.343

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 03:00:00
CurrentTime    2007-03-11 03:00:00.357

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 03:15:00
CurrentTime    2007-03-11 03:15:00.357
In this example, there is a one-hour gap between the run of the job at 2007-03-11 02:00:00 and the run of the job at 2007-03-11 03:00:00 as expected.

However, there is a known issue in which scheduled SQL Server Agent jobs cannot run for one hour during the period when the November 2007 DST change occurs. After the clock is changed back from 2:00 A.M. to 1:00 A.M. on November 4, 2007, SQL Server Agent jobs would skip the next hour and wait until 2:00 A.M. to start next run. This is a known issue. This issue occurred even under the pre-2007 DST conventions. This issue does not result from the changes to DST in 2007.

The following is the sample output of the job:
Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 01:30:00
CurrentTime    2007-11-04 01:30:00.343

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 01:45:00
CurrentTime    2007-11-04  01:45:00.343

one hour plus 15 minutes gap here */

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 02:00:00
CurrentTime    2007-11-04 02:00:00.357

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 02:15:00
CurrentTime    2007-11-04 02:15:00.357
Notice that in the sample output of the job, there is a one-hour-and-15-minute gap between the run of the job at 2007-11-04 01:45:00 and the run of the job at 2007-11-04 02:00:00. This behavior could affect the replication agent jobs, the backup jobs, log shipping jobs, and other scheduled jobs in SQL Server.

คุณสมบัติ

หมายเลขบทความ (Article ID): 931975 - รีวิวครั้งสุดท้าย: 16 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
Keywords: 
kbhowto kbexpertiseadvanced kbsql2005engine kbinfo kbmt KB931975 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:931975

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com