Ich muss eine lokale SQL Server 2017-Datenbank auf eine Azure SQL-Datenbank migrieren und stehe vor einigen Herausforderungen, da einige Einschränkungen zu beachten sind.
Insbesondere, da eine Azure SQL-Datenbank nur in UTC-Zeit (keine Zeitzonen) funktioniert und wir die Ortszeit benötigen, müssen wir die Verwendung von GETDATE()
überall in der Datenbank ändern , was sich als arbeitsintensiver herausgestellt hat, als ich erwartet hatte.
Ich habe eine benutzerdefinierte Funktion erstellt, um die Ortszeit zu ermitteln, die für meine Zeitzone korrekt funktioniert:
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
Das Problem, mit dem ich Probleme habe, besteht darin, GETDATE()
diese Funktion in jeder Ansicht, gespeicherten Prozedur, berechneten Spalten, Standardwerten, anderen Einschränkungen usw. zu ändern .
Was wäre der beste Weg, um diese Änderung umzusetzen?
Wir befinden uns in der öffentlichen Vorschau von verwalteten Instanzen . Es hat immer noch das gleiche Problem GETDATE()
, daher hilft es bei diesem Problem nicht. Der Wechsel zu Azure ist eine Voraussetzung. Diese Datenbank wird immer in dieser Zeitzone verwendet (und wird auch verwendet).