【问题标题】:LAG is not a recognized built in function nameLAG 不是公认的内置函数名称
【发布时间】:2016-07-12 20:43:49
【问题描述】:

我有一个创建以下存储过程的脚本:

CREATE PROCEDURE [dbo].[GetDurationFree] 
    @EquipmentName varchar(50)
AS
    UPDATE dbo.EquipmentMessages
    SET UnlockDuration = (SELECT DATEDIFF (SECOND, 
                (SELECT TOP 1 LAG(TimeUnlock) OVER (ORDER BY TimeUnlock) TimeUnlock
                    FROM dbo.EquipmentMessages
                    WHERE EquipmentName = @EquipmentName
                    ORDER BY TimeLock DESC), 
                (SELECT TOP 1 TimeLock FROM dbo.EquipmentMessages
                    WHERE EquipmentName = @EquipmentName
                    ORDER BY TimeLock DESC)))
    WHERE TimeLock = (SELECT MAX(TimeLock) FROM dbo.EquipmentMessages
                    WHERE EquipmentName = @EquipmentName);

唯一的问题是它使用了延迟,当我尝试执行它时,我收到以下错误:

消息 195,级别 15,状态 10,过程 GetDurationFree,第 6 行
“LAG”不是可识别的内置函数名称。

消息 156,级别 15,状态 1,过程 GetDurationFree,第 12 行
关键字“ORDER”附近的语法不正确。

我正在网上阅读,有人提出以下建议:

ALTER DATABASE yourDBName
SET COMPATIBILITY_LEVEL = 110

但是,当我运行它时,我收到以下错误:

消息 15048,第 16 级,状态 1,第 1 行
数据库兼容级别的有效值为 80、90 或 100。

我在跑步

SQL Server 2014 Management Studio,快速版

但是当我输入以下SELECT @@version

我明白了:

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) 
Mar 29 2009 10:11:52 
Copyright (c) 1988-2008 Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

【问题讨论】:

  • 您可能正在为 SSMS 运行 SQL Server 2014,但您正在与之通信的数据库是 SQL Server 2008。
  • 刚刚编辑,你们是对的,现在是 2008 年,我该如何更改?
  • LAG 是 SQL Server 2012 引擎中的新函数 - 因为您运行的是 2008 版本,所以不能使用此函数用过。
  • @George 您需要升级服务器软件。
  • 只需在您的计算机上安装更新版本的 SQL Server 数据库引擎(不仅仅是 GUI 管理工具)并针对该实例运行

标签: sql-server window-functions


【解决方案1】:

我最终做的是进入卸载程序下的控制面板并删除与 SQL 相关的所有内容。然后我重新安装了程序,它工作正常。

我注意到计算机上没有安装 2008 的早期版本。也许问题出在那儿。

【讨论】:

    【解决方案2】:

    您需要兼容级别为 110 的 SQL Server 2012 数据库才能使用 LAG 功能。

    ALTER DATABASE DBName
    SET COMPATIBILITY_LEVEL = 110
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2012-08-15
      • 2014-06-12
      • 2014-01-25
      • 2017-04-16
      相关资源
      最近更新 更多