sql-server – 在整个数据库中更改GETDATE()的使用
发布时间:2020-05-28 19:23:20 所属栏目:MsSql 来源:互联网
导读:我需要将本地SQL Server 2017数据库迁移到Azure SQL数据库,我面临一些挑战,因为要经历相当多的限制. 特别是,由于Azure SQL数据库仅在UTC时间(无时区)工作,并且我们需要本地时间,因此我们必须在数据库中的任何位置更改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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
