Preciso migrar um banco de dados SQL Server 2017 local para um banco de dados SQL do Azure e estou enfrentando alguns desafios, pois há algumas limitações a serem enfrentadas.
Em particular, como um banco de dados SQL do Azure funciona apenas no horário UTC (sem fusos horários) e precisamos do horário local, temos que alterar o uso de todos os GETDATE()
lugares no banco de dados, o que provou ser mais trabalhoso do que eu previa.
Eu criei uma função definida pelo usuário para obter a hora local que funciona corretamente para o meu fuso horário:
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
O problema com o qual estou tendo problemas é realmente alterar GETDATE()
essa função em todas as visualizações, procedimentos armazenados, colunas computadas, valores padrão, outras restrições etc.
Qual seria a melhor maneira de implementar essa mudança?
Estamos na visualização pública de instâncias gerenciadas . Ele ainda tem o mesmo problema com GETDATE()
, portanto, não ajuda com esse problema. A migração para o Azure é um requisito. Este banco de dados é usado (e será usado) sempre neste fuso horário.