2007년의 일광 절약 시간제 변경 사항을 반영하도록 SQL Server 2005 및 SQL Server 2000을 준비하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 931975 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

소개

2005년 8월 미국 의회는 에너지 정책법(Energy Policy Act)을 통과시켰습니다. 이 법에는 DST(일광 절약 시간제)의 시작 날짜와 종료 날짜를 변경하는 내용이 포함되어 있습니다. 이 법이 발효되는 2007년부터 DST가 기존보다 3주 일찍 시작해서 한 주 늦게 끝납니다. 즉, DST가 3월 두 번째 일요일 오전 2시에 시작해서 11월 첫 번째 일요일 오전 2시에 끝납니다.

다음 표는 2007년의 일광 절약 시간제 변경 사항을 요약한 것입니다.
표 축소표 확대
이전 DST 시작 날짜2007년 DST 시작 날짜이전 DST 종료 날짜2007년 DST 종료 날짜
4월 첫 번째 일요일3월 두 번째 일요일10월 마지막 일요일 11월 첫 번째 일요일
2007년 4월 1일2007년 3월 11일2007년 10월 28일2007년 11월 4일
이 문서에서는 2007년의 DST 변경 사항을 반영하도록 Microsoft SQL Server 2005 및 Microsoft SQL Server 2000을 준비하는 방법을 설명합니다.

추가 정보

필수 작업

자동으로 DST를 조정하도록 구성된 컴퓨터에 SQL Server가 설치되어 있고 컴퓨터의 표준 시간대가 2007년의 DST 변경 사항을 따르는 경우 다음과 같은 작업을 수행해야 합니다.
  • Microsoft 기술 자료 문서 924840에서 설명하는 Windows 업데이트를 설치합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    924840 Windows용 2007년 글로벌 표준 시간대의 테스트 버전을 사용할 수 있다
  • 컴퓨터에 SQL Server Notification Services가 설치되어 있는 경우 Microsoft 기술 자료 문서 931815에서 설명하는 업데이트를 설치합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    931815 SQL Server 2005 Notification Services 및 SQL Server 2000 Notification Services용 DST 표준 시간대 업데이트
  • SQL Server는 특정 업데이트를 적용하지 않아도 올바로 작동하지만 운영 체제는 업데이트해야 합니다. 또한 SQL Server와 상호 작용하는 제품과 응용 프로그램도 업데이트해야 합니다. 이러한 제품과 응용 프로그램으로는 Notification Services, Windows SharePoint Services, Microsoft CRM 등이 있습니다. 기타 Microsoft 제품에 적용해야 하는 업데이트의 전체 목록을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
    http://support.microsoft.com/gp/cp_dst

SQL Server 시간 사용 및 보고

SQL Server 2005 및 SQL Server 2000에서는 SQL Server 데이터베이스 엔진이 다음과 같은 두 가지 타이머를 사용하여 시간 정보를 생성합니다.
  • 정확도가 높은 타이머
  • 정확도가 낮은 타이머
정확도가 높은 타이머의 타이머 정확도는 CPU의 RDTSC(타임 스탬프 카운터 읽기) 명령을 기반으로 하고, 정확도가 낮은 타이머의 타이머 정확도는 Microsoft Windows API의 GetTickCount 함수를 기반으로 합니다.

다양한 타이머 기반 백그라운드 작업과 중요 시스템 구성 요소는 올바른 작동을 위해 이러한 타이머를 사용합니다. 이러한 타이머가 특정 시간을 기준으로 작동하므로 내부 구성 요소와 내부 작업은 2007년의 DST 변경 사항으로 인한 영향을 받지 않습니다.

다음은 타이머 기반 작업 및 구성 요소에 대해 수행하는 작업의 예입니다.
  • 지연 기록기, 잠금 모니터 및 스케줄러 모니터와 같은 시스템 구성 요소
  • 고스트 정리 및 자동 축소와 같은 백그라운드 작업
  • 잠금 및 래치와 같은 시간 제한 기반 리소스
  • SQL Server 에이전트 작업 및 유지 관리 계획과 같은 예약된 작업
  • WAITFOR 문과 같은 시스템 문
SQL Server는 외부 구성 요소와 외부 응용 프로그램에서 사용할 수 있는 시간 정보도 생성합니다. 이러한 시간 정보는 Windows 운영 체제에서 가져옵니다. 따라서 운영 체제에서 올바른 시간 값을 반환하는 한 이러한 시간 정보는 정확합니다.

다음은 외부 구성 요소 및 응용 프로그램에 대해 수행하는 작업의 예입니다.
  • 다양한 이벤트에 대한 시작 시간 열, 종료 시간 열 및 기간 열과 같은 SQL Server 프로파일러 또는 SQL 프로파일러 이벤트 열
  • SQL Server Errorlog, 이벤트 로그 및 시스템 테이블과 같은 다양한 로그에 보고되는 시간 정보
  • GetDate 함수 및 GetUtcDate 함수와 같은 시스템 함수
다음과 같은 경우를 생각해 볼 수 있습니다. SQL Server 프로파일러 또는 SQL 프로파일러를 사용하여 SQL Server 추적을 만듭니다. 이 추적은 2007년 3월 DST 시간 변경 전에 시작해서 2007년 3월 DST 시간 변경 후에 끝나는 쿼리를 기록합니다. 이 경우 시간 정보는 정확하고 DST 변경 사항으로 인한 영향을 받지 않습니다.
다음은 추적의 출력 예제입니다.
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년 11월에 DST 시간이 변경되는 동안 쿼리를 기록하는 추적의 출력 예제입니다.
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

2007년의 DST 변경 사항과 관련 없는 알려진 DST 관련 SQL Server 문제

DateDiff 및 DateAdd 날짜 및 시간 함수가 DST를 인식하지 못한다

Transact-SQL 문을 사용하여 시스템에서 제공하는 날짜 및 시간 함수를 기반으로 시간을 계산할 때는 해당 문을 자세히 조사해야 합니다. 특히, 응용 프로그램 논리의 하드 코드에 DST 시간을 기록한 경우에는 DateDiffDateAdd 시스템 함수가 DST를 인식하지 못합니다.

예를 들어, 응용 프로그램에서 다음과 같은 문을 실행하여 시간 차이를 계산할 때 이전 DST 시간을 기반으로 계산이 수행됩니다. 2007년의 새 DST 체제에서는 2007년 3월 11일에 DST가 시작되지만 이전 DST 체제에서는 2007년 4월 1일에 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
이 문을 실행하면 다음과 같은 결과가 반환됩니다.
TimeDiffInSecs 
-------------- 
3,630
DateDiff 시스템 함수가 DST를 인식하지 못하기 때문에 이 문은 30초가 아니라 3,630초를 반환합니다.

이 경우 시간을 올바로 계산하려면 GetDate 함수 대신 GetUtcDate 함수를 사용합니다. GetUtcDate 함수는 현재 UTC 시간을 반환합니다. 현재 UTC 시간은 SQL Server가 실행되고 있는 컴퓨터의 운영 체제에 대한 표준 시간대 설정과 함께 현재 로컬 시간에서 파생됩니다.

다음은 올바로 작동하는 수정된 문입니다.
/*-------------------------------------------------------
	  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
이 문을 실행하면 다음과 같은 올바른 결과가 반환됩니다.
TimeDiffInSecs 
-------------- 
30

예약된 SQL Server 에이전트 작업에 DST 종료 날짜가 미치는 영향

다음과 같은 경우를 생각해 볼 수 있습니다. 현재 로컬 시간을 인쇄하는 SQL Server 에이전트 작업을 예약했습니다. 이 작업은 15분마다 실행됩니다. 2007년 11월에 DST가 변경되면 SQL Server 에이전트는 자동으로 DST 변경 사항을 추적합니다. SQL Server 에이전트는 운영 체제에서 추적한 내용을 기반으로 작업의 다음 예약 실행을 올바로 업데이트합니다.

다음은 작업의 출력 예제입니다.
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
이 예제에서는 2007년 3월 11일 오전 2시의 작업 실행과 2007년 3월 11일 오전 3시의 작업 실행 사이에 예상대로 1시간의 차이가 있음을 보여 줍니다.

그러나 2007년 11월에 DST가 변경될 때 예약된 SQL Server 에이전트 작업이 1시간 동안 실행되지 못하는 알려진 문제가 있습니다. 2007년 11월 4일에 시스템 시계가 오전 2시에서 오전 1시로 다시 변경되면 SQL Server 에이전트 작업은 이후 1시간을 건너뛰고 오전 2시가 되면 다음 실행을 시작합니다. 이것은 알려진 문제입니다. 이 문제는 2007년의 새 DST 규칙이 적용되기 전에도 발생했습니다. 이 문제는 2007년의 DST 변경 사항과 관련이 없습니다.

다음은 작업의 출력 예제입니다.
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
이 작업의 출력 예제에서는 2007년 11월 4일 오전 1시 45분의 작업 실행과 2007년 11월 4일 오전 2시의 작업 실행 사이에 1시간 15분의 차이가 있음을 보여 줍니다. 이 동작은 SQL Server의 복제 에이전트 작업, 백업 작업, 로그 전달 작업 및 기타 예약된 작업에 영향을 줄 수 있습니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 931975 - 마지막 검토: 2007년 12월 26일 수요일 - 수정: 3.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • 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 Server 2005 Workgroup Edition
  • 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
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
키워드:?
kbhowto kbexpertiseadvanced kbsql2005engine kbinfo KB931975

피드백 보내기

 

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