sql-server – 在整个数据库中更改GETDATE()的使用

前端之家收集整理的这篇文章主要介绍了sql-server – 在整个数据库中更改GETDATE()的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要将本地sql Server 2017数据库迁移到Azure sql数据库,我面临一些挑战,因为要经历相当多的限制.

特别是,由于Azure sql数据库仅在UTC时间(无时区)工作,并且我们需要本地时间,因此我们必须在数据库中的任何位置更改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().

实施此更改的最佳方法是什么?

我们在Managed Instances的公开预览中.它仍然与GETDATE()有相同的问题,所以它对这个问题没有帮助.迁移到Azure是一项要求.始终在此时区中使用(并将使用)此数据库.

解决方法

>使用sql Server工具将数据库对象定义导出到sql文件,该文件包括:表,视图,触发器,SP,函数
>使用任何文本编辑器编辑sql文件(首先进行备份),该编辑器允许您查找文本“GETDATE()”并将其替换为“[dbo].[getlocaldate]()”
>在Azure sql中运行已编辑的sql文件以创建数据库对象…
>执行数据迁移.

在这里您可以参考azure文档:Generating Scripts for SQL Azure

猜你在找的MsSQL相关文章