2016-07-12 3 views
3

Ich habe ein Skript, das die folgende gespeicherte Prozedur erstellt:LAG ist kein in Funktionsnamen gebaut erkannte

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); 

Das einzige Problem ist, dass es ein Lag verwendet, wenn ich versuche, ihn auszuführen erhalte ich die folgende Fehler:

Msg 195, Ebene 15, Status 10, Verfahren GetDurationFree, Line 6
'LAG' ist der Name keine anerkannte integrierte Funktion.

Nachricht 156, Ebene 15, Status 1, Prozedur GetDurationFree, Zeile 12
Falsche Syntax neben dem Schlüsselwort 'ORDER'.

Ich las online und schlug jemand vor, die folgenden:

ALTER DATABASE yourDBName 
SET COMPATIBILITY_LEVEL = 110 

Jedoch, wenn ich dieses laufen lasse, erhalte ich folgende Fehlermeldung:

Msg 15048, Ebene 16, Status 1, Zeile 1
Gültige Werte der Datenbankkompatibilitätsstufe sind 80, 90 oder 100.

Ich betreibe

SQL Server 2014 Management Studio, die Express-Version

Allerdings, wenn ich die folgende SELECT @@version

gebe ich bekommen:

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) 
+3

Sie können SQL Server 2014 für SSMS ausführen, aber die Datenbank, mit der Sie kommunizieren, ist SQL Server 2008. –

+0

Nur bearbeitet und Sie haben Recht, es ist 2008, wie kann ich das ändern? – George

+1

'LAG' ist eine ** neue Funktion ** in der SQL Server ** 2012 ** - Engine - da Sie gegen eine Version von 2008 laufen, kann diese Funktion nicht verwendet werden. –

Antwort

0

Was ich tun am Ende wird In das Control Panel unter Deinstallieren Sie ein Programm und löschte alles, was mit SQL zu tun hat. Dann habe ich das Programm installiert und es hat gut funktioniert.

Ich bemerkte, dass es eine frühe Version von 2008 auf dem Computer, der nicht installiert war. Vielleicht kommt das Problem von dort.