You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中GETDATE()函数异常:返回固定过期时间求助

解决SQL Server 2019中GETDATE()返回固定滞后时间的问题

排查与修复步骤

1. 验证系统时间函数一致性

先排除函数本身被篡改的可能:

  • 执行语句:SELECT GETDATE(), SYSDATETIME(), SYSUTCDATETIME();
  • 若三个函数返回相同的滞后时间,说明SQL Server的系统时间上下文存在异常;若仅GETDATE()异常,检查是否存在同名自定义函数:SELECT * FROM sys.objects WHERE name = 'GETDATE' AND type = 'FN';,如果有,直接删除该自定义函数即可恢复系统函数功能。

2. 检查SQL Server的时间同步状态

SQL Server依赖主机时间,但服务账户可能存在同步异常:

  • 先开启高级配置:EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
  • 启用xp_cmdshell临时排查:EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
  • 执行时间同步状态查询:EXEC xp_cmdshell 'w32tm /query /status',确认服务账户下的时间是否与主机系统同步
  • 若不同步,强制同步:EXEC xp_cmdshell 'w32tm /resync'
  • 排查完成后关闭xp_cmdshell:EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE;

3. 检查SQL Server服务账户权限

服务账户需具备读取系统时间的权限:

  • 打开服务管理器,找到SQL Server服务,查看其登录账户
  • 若使用自定义账户,需确保该账户拥有SeSystemtimePrivilege权限(通过本地安全策略配置:本地策略→用户权限分配→更改系统时间);若为Local Service账户,默认已具备该权限,可跳过此步

4. 排除客户端或会话异常

  • 关闭当前Azure Data Studio查询窗口,重新打开后执行SELECT GETDATE();,排除会话级别的时间上下文修改
  • 使用SSMS(SQL Server Management Studio)执行相同查询,对比结果,确认是否为Azure Data Studio客户端缓存问题
  • 若怀疑客户端缓存,可清空Azure Data Studio缓存(路径为%APPDATA%\azuredatastudio下的缓存文件夹)后重新连接

5. 检查数据库状态

  • 执行SELECT name, is_read_only FROM sys.databases WHERE name = '你的数据库名';,确认数据库是否处于只读状态(虽然GETDATE()通常不受只读影响,但需排除极端场景)

内容的提问来源于stack exchange,提问作者KRISTIJAN TOMASINI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:52:05