我需要将本地 SQL Server 2017 数据库迁移到 Azure SQL 数据库,我面临着一些挑战,因为有很多限制要通过。
特别是,由于 Azure SQL 数据库仅在 UTC 时间(无时区)中工作并且我们需要本地时间,因此我们必须更改数据库中GETDATE() 任何地方的使用,这已证明比我预期的要多。
GETDATE()
我创建了一个用户定义的函数来获取适用于我的时区的本地时间:
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
我遇到的问题是GETDATE()在每个视图、存储过程、计算列、默认值、其他约束等中实际更改此函数。
实施此更改的最佳方式是什么?
我们处于托管实例的公共预览版中。它仍然有同样的问题GETDATE(),所以它对这个问题没有帮助。迁移到 Azure 是一项要求。这个数据库总是在这个时区使用(并将被使用)。
"GETDATE()"
"[dbo].[getlocaldate]()"