Tôi cần di chuyển cơ sở dữ liệu SQL Server 2017 tại chỗ sang cơ sở dữ liệu Azure SQL và tôi đang đối mặt với một số thách thức do có khá nhiều hạn chế phải trải qua.
Đặc biệt, vì cơ sở dữ liệu Azure SQL chỉ hoạt động trong thời gian UTC (không có múi giờ) và chúng tôi cần giờ địa phương, chúng tôi phải thay đổi việc sử dụng GETDATE()
mọi nơi trong cơ sở dữ liệu, điều này đã được chứng minh là hoạt động nhiều hơn tôi dự đoán.
Tôi đã tạo một hàm do người dùng xác định để có được giờ địa phương hoạt động chính xác cho múi giờ của mình:
CREATE FUNCTION [dbo].[getlocaldate]()
RETURNS datetime
AS
BEGIN
DECLARE @D datetimeoffset;
SET @D = CONVERT(datetimeoffset, SYSDATETIMEOFFSET()) AT TIME ZONE 'Pacific SA Standard Time';
RETURN(CONVERT(datetime,@D));
END
Vấn đề tôi gặp vấn đề là thực sự thay đổi GETDATE()
với chức năng này trong mọi chế độ xem, quy trình được lưu trữ, cột được tính toán, giá trị mặc định, các ràng buộc khác, v.v.
Điều gì sẽ là cách tốt nhất để thực hiện thay đổi này?
Chúng tôi đang ở trong bản xem trước công khai của Trường hợp được quản lý . Nó vẫn có cùng một vấn đề GETDATE()
, vì vậy nó không giúp gì cho vấn đề này. Di chuyển đến Azure là một yêu cầu. Cơ sở dữ liệu này được sử dụng (và sẽ được sử dụng) luôn trong múi giờ này.