sql >> Database >  >> RDS >> Sqlserver

Onjuiste syntaxis in de buurt van het trefwoord 'current_timestamp' - Maar slechts op één database

Controleer het compatibiliteitsniveau van de database (het was niet 100% duidelijk of het probleem zich voordeed in DB1 of bij het aanroepen van de functie in DB1).

Ik wed dat het compatibiliteitsniveau 80 is in welke database het probleem ook vertoont; SQL Server 2000 stond niet toe dat functies op die manier rechtstreeks aan UDF's werden doorgegeven (en we hebben hetzelfde probleem met het aanroepen van enkele van de dynamische beheerfuncties als het compat-niveau 80 is - zie deze blogpost en de opmerkingen ). Deze database moet zijn hersteld of gekoppeld nadat er een back-up van is gemaakt of is losgekoppeld van 2000. Of na een upgrade vanaf 2000. U kunt de huidige compatibiliteit op deze manier controleren:

SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';

Als je merkt dat het <100 is, kun je zeggen:

ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;

Maar u moet dit alleen doen als u weet dat de lagere compatibiliteit om een ​​andere reden niet nodig is - en u moet op een testsysteem valideren dat de database werkt zoals verwacht onder het nieuwe compat-niveau. Als je problemen hebt, kun je het altijd terug veranderen, maar het is beter om voorbereid te zijn.

Als u niet wilt knoeien met het compatibiliteitsniveau, kunt u uw logica enigszins wijzigen.

DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);



  1. Gegevens moeten worden vervangen volgens de opzoektabel

  2. Selecteren uit pg_catalog.pg_settings werd traag na het updaten naar PostgreSQL 12 (windows)

  3. PHP OCI, Oracle en standaard getalnotatie

  4. pgAdmin-snelkoppelingen om scripts uit te voeren