首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟不是一个可识别的内置函数名。

延迟不是一个可识别的内置函数名。
EN

Stack Overflow用户
提问于 2016-07-12 20:43:49
回答 2查看 7.1K关注 0票数 4

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

代码语言:javascript
复制
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);

唯一的问题是它使用滞后,当我试图执行它时,我会得到以下错误:

Msg 195,15级,状态10,过程GetDurationFree,第6行 ‘'LAG’不是一个公认的内置函数名. Msg 156,15级,状态1,过程GetDurationFree,第12行 关键字“ORDER”附近的语法不正确。

我在网上阅读,有人建议如下:

代码语言:javascript
复制
ALTER DATABASE yourDBName
SET COMPATIBILITY_LEVEL = 110

但是,当我运行这个程序时,我会得到以下错误:

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

我在跑步

SQLServer2014ManagementStudio,快速版本

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

我得到:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-13 21:01:54

我最后所做的是进入控制面板,卸载一个程序并删除与SQL相关的所有内容。然后我安装了这个程序,它运行得很好。

我注意到2008年的早期版本还没有安装在电脑上。也许问题就出在那里。

票数 0
EN

Stack Overflow用户

发布于 2018-09-27 20:36:07

您需要SQL Server 2012数据库,其可压缩级别为110,才能使用延迟函数。

代码语言:javascript
复制
ALTER DATABASE DBName
SET COMPATIBILITY_LEVEL = 110
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38338569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档