sql >> Base de Datos >  >> RDS >> Sqlserver

Sintaxis incorrecta cerca de la palabra clave 'current_timestamp', pero solo en una base de datos

Verifique el nivel de compatibilidad de la base de datos (no estaba 100% claro si el problema estaba ocurriendo en DB1 o al llamar a la función en DB1).

Apuesto a que el nivel de compatibilidad es 80 en cualquier base de datos que muestre el problema; SQL Server 2000 no permitía que las funciones se pasaran directamente a las UDF de esa manera (y tenemos el mismo problema al llamar a algunas de las funciones de administración dinámica si el nivel de compatibilidad es 80; consulte esta publicación de blog y los comentarios ). Esta base de datos debe haber sido restaurada o adjuntada después de haber sido respaldada o desconectada desde 2000. O después de haber sido actualizada desde 2000. Puede verificar la compatibilidad actual de esta manera:

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

Si encuentra que es <100, puede decir:

ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;

Pero solo debe hacerlo si sabe que la menor compatibilidad no es necesaria por alguna otra razón, y debe validar en un sistema de prueba que la base de datos funciona como se espera en el nuevo nivel de compatibilidad. Si tienes problemas, siempre puedes volver a cambiarlo, pero es mejor estar preparado.

Si no quiere meterse con el nivel de compatibilidad, puede cambiar ligeramente su lógica.

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