Udostępnij za pośrednictwem


Obsługa sekundy przestępowej

Ten artykuł zawiera informacje o pomocy technicznej firmy Microsoft w drugim kroku.

Oryginalny numer KB: 2722715

Podsumowanie

Ten artykuł zawiera informacje na temat pomocy technicznej firmy Microsoft dla sekundy przestępowej. Sekunda przestępna to jednosekundowa korekta, która jest sporadycznie stosowana do uniwersalnego czasu koordynowanego (UTC), aby utrzymać czas dnia blisko średniego czasu słonecznego lub UT1.

Uwaga 16.

Systemy Windows Server 2019 i Aktualizacja systemu Windows 10 z października 2018 obsługują sekundy przestępne na platformie. Jednak ten artykuł nie ma zastosowania ściśle do tych lub nowszych systemów operacyjnych. Aby uzyskać więcej informacji, zobacz:

Więcej informacji

(1) Windows

Informacje o systemie operacyjnym
Przestęp drugie przetwarzanie nie jest obsługiwane oddzielnie przez system operacyjny Windows. Na przykład informacje o roku, miesiącu, dacie i godzinie w następującym formacie nie są obsługiwane przez system operacyjny Windows:

rrrr/mm/dd 08:59:60

W związku z tym przetwarzanie 2012/7/1 08:59:60 jest przetwarzane jako 2012/7/1 09:00:00 zgodnie z formatem ISO 8601.

Informacje o usłudze synchronizacji czasu (usługa czasowa systemu Windows)
Usługa czasowa systemu Windows nie implementuje sekundy przestępnej, mimo że przechodzi przez flagę Wskaźnika skoku (LI) z serwera NTP do serwera, który hostuje usługę Czas systemu Windows i klientów na poziomie down-level, które synchronizują się z nim. Usługa synchronizacji czasu systemu Windows (W32Time) nie wstawia sekundy przestępnej, a zamiast tego kontynuuje zwykły proces synchronizacji czasu.

W krótkim okresie, który następuje po wprowadzeniu sekundy przestępnej na nadrzędnym serwerze NTP (w tym W32time Server), różnica czasu około jednej sekundy występuje między tym nadrzędnym serwerem NTP a klientami W32time, które z niego synchronizują. Klienci W32time poprawiają zegary lokalne, gdy następnie synchronizują czas z serwera nadrzędnego.

Aby uzyskać więcej informacji, zobacz następujący artykuł z bazy wiedzy Microsoft Knowledge Base (KB):

909614 Jak usługa czasowa systemu Windows traktuje sekundę przestępną

Ponadto w usłudze Czas systemu Windows nie zawsze można zapobiec wystąpieniu marginalnych różnic czasowych, takich jak jedna sekunda. System operacyjny jest przeznaczony do obsługi odmian czasu. Przestępne drugie odmiany są obsługiwane w sposób czysty, co pozwala na nieprzerwane wykonywanie. Aby uzyskać więcej informacji, zobacz następujący artykuł bazy wiedzy:

939322 granicy pomocy technicznej w celu skonfigurowania usługi Czas systemu Windows dla środowisk o wysokiej dokładności

Informacje o usłudze klastra Co w przypadku konfiguracji klastra, jest taka sama jak w przypadku systemu operacyjnego: nie jest wykonywane przetwarzanie w sekundzie przestępnym.

(2) SQL Server 2000, 2005, 2008, 2008 R2, 2012 i 2014

Program SQL Server nie używa danych czasu do zarządzania operacjami wewnętrznymi, takimi jak transakcje. W związku z tym nawet jeśli jednosekundowe odchylenie występuje w czasie systemowym z powodu sekundy przestępnej, nie ma to wpływu na operacje programu SQL Server. Podobnie jak w przypadku systemu operacyjnego Windows, program SQL Server nie rozpoznaje niezależnie sekundy przestępnego.

Należy pamiętać, że typ danych daty (na przykład data/godzina) nie obsługuje formatu, w którym wartość sekund osiągnie wartość 60, na przykład 2012/7/1 08:59:60. W związku z tym jeśli połączenie zostanie nawiązane z programem SQL Server z poziomu aplikacji działającej w systemie operacyjnym obsługującym drugi skok, a system operacyjny próbuje ustawić sekundę przestępną (dane, w których wartość drugiego wynosi 60) w kolumnie i zmiennej typu danych daty, zwracany jest błąd. Aby uzyskać więcej informacji, zobacz następującą sekcję "Informacje referencyjne".

Informacje referencyjne

[Przykład] Gdy sekunda przestępna jest obsługiwana jako typ danych daty w programie SQL Server

create table leap_second(
a int,
b datetime,
)
go
insert into [leap_second] values (1,convert(datetime,'2012/07/01 08:59:60'))
go
select convert(datetime,'2012/07/01 08:59:60')
go
select datediff(day,convert(datetime,'2012/07/01 08:59:60'),getdate())
go
declare @b datetime
set @b='2012/07/01 08:59:60'
go
declare @c time
set @c='08:59:60'
go
declare @d datetime2
set @d='2012/07/01 08:59:60'
go
declare @e datetimeoffset 
set @e='2012/07/01 08:59:60'
go

Result
Komunikat 242, poziom 16, stan 3, wiersz 1
W wyniku konwersji typu danych varchar na typ danych datetime wartość jest ustawiana poza zakresem.
Instrukcja została zakończona.

Komunikat 242, poziom 16, stan 3, wiersz 1
W wyniku konwersji typu danych varchar na typ danych datetime wartość jest ustawiana poza zakresem.

Komunikat 242, poziom 16, stan 3, wiersz 1
W wyniku konwersji typu danych varchar na typ danych datetime wartość jest ustawiana poza zakresem.

Komunikat 242, poziom 16, stan 3, wiersz 3
W wyniku konwersji typu danych varchar na typ danych datetime wartość jest ustawiana poza zakresem.

Komunikat 241, poziom 16, stan 1, wiersz 2
Proces konwersji nie powiódł się podczas konwersji z ciągu znaku do daty i godziny lub do jednej z tych dwóch.

Komunikat 241, poziom 16, stan 1, wiersz 2
Proces konwersji nie powiódł się podczas konwersji z ciągu znaku do daty i godziny lub do jednej z tych dwóch.

Komunikat 241, poziom 16, stan 1, wiersz 2
Proces konwersji nie powiódł się podczas konwersji z ciągu znaku do daty i godziny lub do jednej z tych dwóch.

(3) Exchange Server 2003, 2007, 2010 i 2013

Czas, który jest używany w programie Exchange Server, obejmuje czas mierzony przez zegar systemowy i czas, który jest obliczany jako okres, który upłynął od początku usługi. W przetwarzaniu używającym zegara systemowego serwer Exchange działa bez rozpoznawania sekundy przestępowej. Z drugiej strony (jeśli dotyczy to okresu, który upłynął), chociaż różnica jednej sekundy występuje z wstawieniem sekundy przestępnej, to odchylenie może wystąpić nawet w normalnych okolicznościach. Podobnie jak w przypadku systemu operacyjnego Windows, program Exchange Server jest przeznaczony do obsługi drobnych zmian czasu. W związku z tym nie ma to wpływu na operacje programu Exchange Server.

Oprócz operacji wewnętrznej harmonogram w formacie iCalendar reprezentuje przypadek, w którym można odbierać (z zewnątrz) wartość czasu, do której dodano sekundę przestępną. Jednak gdy program Exchange Server odbiera harmonogramy w formacie iCalendar, program obsługuje tylko te formaty, w których notacja czasowa jest zdefiniowana zgodnie z RFC 5545. W odniesieniu do sekundy skokowej notacja sekund jest obsługiwana w zakresie 060. Jeśli liczba większa niż 60 jest określona jako wartość sekund, jest ona przetwarzana jako nieprawidłowy format i nie jest rozpoznawana jako poprawny format iCalendar.

W programie Outlook 60 sekund jest uznawane za 0. W związku z tym 2012/07/01 08:59:60 staje się 2012/07/01 08:59:00. Oznacza to, że istnieje możliwość co najwyżej jednominutowego odchylenia. W takim przypadku kolejność odbioru wiadomości e-mail może wydawać się odbiegać, ale w przeciwnym razie nie ma wpływu na operacje.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

2.2.36 [RFC5545] Sekcja 3.3.12 Czas

(4) Internet Information Services (IIS)

Drugi skok nie ma wpływu na usługi IIS.

(5) Inne

Aplikacje działające w systemie Windows zwykle używają zegara systemowego. W związku z tym można ich używać bez uwagi na sekundę przestępną.

Jeśli jednak dostęp do produktu firmy Microsoft jest uzyskiwany z poziomu aplikacji, która zarządza czasem samodzielnie i obsługuje sekundę przestępną, lub z aplikacji działającej w systemie operacyjnym obsługującym drugi skok, prawdopodobnie wystąpią problemy. Dzieje się tak, ponieważ produkty firmy Microsoft nie rozpoznają sekundy przestępowej.

Ponadto aplikacje nie powinny polegać na czasie systemowym, aby zwiększyć monotonicznie. Zamiast tego należy użyć funkcji GetTickCount64(), aby odczytać bieżącą liczbę znaczników, która jest czasem od uruchomienia w milisekundach.