Đó là kiến thức phổ biến rằng SQL Server đối phó với thời gian tiết kiệm ánh sáng ban ngày (DST) một cách chính xác, vậy tại sao bạn nên quan tâm?
Chà, kiến thức không phổ biến đến mức khi kết thúc DST khi đồng hồ quay trở lại một giờ (luôn luôn là 02:00 ở Mỹ), về cơ bản, SQL Agent tạm dừng trong một giờ (ít nhất là SS2000 trở đi). Điều này có nghĩa là nếu bạn có một công việc đang làm gì đó cứ sau 15 phút, sẽ có một khoảng cách 75 phút giữa thời gian thực hiện công việc lúc 01:45 và thực hiện công việc lúc 02:00. Điều này xảy ra bởi vì vào lúc 02:00, thời gian được đặt lại là 01:00 nhưng thời gian chạy tiếp theo của tất cả các công việc vẫn giữ nguyên - vì vậy công việc của bạn không thể thực hiện cho đến thời gian dự kiến tiếp theo là 02:00. Vì vậy, ở bán cầu bắc vào mỗi mùa thu và ở bán cầu nam vào mỗi mùa xuân, bạn sẽ mất một giờ công việc của các tác nhân SQL. Tuy nhiên, tại sao bạn nên quan tâm?
Vâng, nó phụ thuộc vào những công việc bị trì hoãn một giờ. Nếu bạn
có một công việc nhận sao lưu nhật ký cứ sau 15 phút thì vào ngày DST
kết thúc, thực tế có khoảng cách 75 phút giữa các lần sao lưu nhật ký. Nếu bạn
có Thỏa thuận cấp độ dịch vụ (SLA) giới hạn số lượng
công việc bị mất
tối đa là 15 phút trong trường hợp xảy ra thảm họa, thì trong 75 phút đó bạn sẽ không thể gặp SLA đó!
Đó có thể là một vấn đề khá lớn, đặc biệt là nếu có sự cố xảy ra trong giờ đó (không ít nhiều khả năng xảy ra sự cố bất cứ lúc nào, nhưng vẫn có thể xảy ra). Trong trường hợp đó, bạn cần đưa ra một giải pháp thay thế. Một vài cách để giải quyết vấn đề mà tôi có thể nghĩ ra:
Cả hai đều là giải pháp khả thi nhưng tôi nghĩ cách tốt nhất là tạo một công việc SQL Agent chạy vào lúc 01:59 và tạo thêm các công việc sao lưu để chạy vào lúc 01:00, 01:15, 01:30 và 01:45. Tôi không thấy lý do tại sao điều này là không thể. Lúc 10:36 sáng nay tôi đã tạo một công việc đại lý đơn giản để in ngày vào một tệp và đặt nó để thực thi lúc 09:40 - trong quá khứ. Sau đó tôi đặt thời gian hệ thống của mình trở lại một giờ và công việc được thực hiện hoàn hảo. Nhược điểm duy nhất của giải pháp này là bạn cần tạo và lên lịch cho các công việc bổ sung bằng cách sử dụng SP T-SQL Agent được nhúng trong các bước công việc cho công việc 01:59 của bạn - tẻ nhạt nhưng không khó. Có lẽ ai đó có thể gửi cho tôi một kịch bản và tôi sẽ viết blog như một phần tiếp theo?
Vì vậy, với việc DST sắp kết thúc vào ngày 4 tháng 11, đây chắc chắn là điều bạn cần lưu ý ngay cả khi bạn không muốn gặp rắc rối khi đối phó với việc tiếp xúc thêm giờ. Như một bên - ngày khi DST bắt đầu và kết thúc thay đổi trong năm nay. Bài viết KB 931975 thảo luận về phần nào của SQL Server không biết về ngày thay đổi và những gì bạn có thể làm về nó.