sql-server – 在整个数据库中更改GETDATE()的使用
发布时间:2020-12-12 06:19:54 所属栏目: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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |