Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sintaxe incorreta perto da palavra-chave 'current_timestamp' - mas apenas em um banco de dados


Verifique o nível de compatibilidade do banco de dados (não ficou 100% claro se o problema estava acontecendo no DB1 ou ao chamar a função no DB1).

Aposto que o nível de compatibilidade é 80 em qualquer banco de dados que esteja apresentando o problema; O SQL Server 2000 não permitia que funções fossem passadas diretamente para UDFs dessa maneira (e temos o mesmo problema ao chamar algumas das funções de gerenciamento dinâmico se o nível de compatibilidade for 80 - consulte esta postagem do blog e os comentários ). Este banco de dados deve ter sido restaurado ou anexado após o backup ou desanexação a partir de 2000. Ou após ser atualizado a partir de 2000. Você pode verificar a compatibilidade atual desta forma:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';

Se você achar que é <100, você pode dizer:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;

Mas você só deve fazer isso se souber que a compatibilidade inferior não é necessária por algum outro motivo - e você deve validar em um sistema de teste que o banco de dados funciona conforme o esperado sob o novo nível de compatibilidade. Se você tiver problemas, você sempre pode trocá-lo de volta, mas é melhor estar preparado.

Se você não quiser mexer no nível de compatibilidade, poderá alterar um pouco sua lógica.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);