Muszę przeprowadzić migrację lokalnej bazy danych SQL Server 2017 do bazy danych Azure SQL i mam do czynienia z pewnymi wyzwaniami, ponieważ istnieje wiele ograniczeń.
W szczególności, ponieważ baza danych Azure SQL działa tylko w czasie UTC (bez stref czasowych) i potrzebujemy czasu lokalnego, musimy zmienić użycie GETDATE()
wszędzie w bazie danych, co okazało się więcej pracy, niż się spodziewałem.
Utworzyłem funkcję zdefiniowaną przez użytkownika, aby uzyskać czas lokalny, który działa poprawnie dla mojej strefy czasowej:
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
Problem, z którym mam problem, polega na tym, aby zmienić GETDATE()
tę funkcję w każdym widoku, procedurze składowanej, kolumnach obliczeniowych, wartościach domyślnych, innych ograniczeniach itp.
Jaki byłby najlepszy sposób na wdrożenie tej zmiany?
Jesteśmy w publicznej wersji zapoznawczej instancji zarządzanych . Nadal ma ten sam problem GETDATE()
, więc nie pomaga w rozwiązaniu tego problemu. Przeprowadzka na platformę Azure jest wymagana. Ta baza danych jest używana (i będzie używana) zawsze w tej strefie czasowej.