sql >> Databáze >  >> RDS >> Sqlserver

Nesprávná syntaxe poblíž klíčového slova 'current_timestamp' - Ale pouze v jedné databázi

Zkontrolujte úroveň kompatibility databáze (nebylo 100% jasné, zda k problému dochází v DB1 nebo při volání funkce v DB1).

Vsadím se, že úroveň kompatibility je 80 v jakékoli databázi, která vykazuje problém; SQL Server 2000 neumožňoval předávání funkcí přímo do UDF tímto způsobem (a máme stejný problém s voláním některých funkcí dynamické správy, pokud je úroveň kompatibility 80 – viz tento blogový příspěvek a komentáře ). Tato databáze musí být obnovena nebo připojena po zálohování nebo odpojení od roku 2000. Nebo po upgradu z roku 2000. Aktuální kompatibilitu můžete zkontrolovat takto:

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

Pokud zjistíte, že je <100, můžete říci:

ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;

Měli byste to ale udělat pouze v případě, že víte, že nižší kompatibilita není potřeba z nějakého jiného důvodu – a měli byste na testovacím systému ověřit, že databáze funguje podle očekávání na nové úrovni kompatibility. Pokud máte problémy, vždy to můžete změnit zpět, ale je lepší být připraven.

Pokud si nechcete zahrávat s úrovní kompatibility, můžete trochu změnit svou logiku.

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



  1. Laravel:Získejte objekt z kolekce podle atributu

  2. Uzavření sady výsledků streamování (pomocí mysql jdbc) trvá dlouho

  3. Připojení Postgres je z PHP pomalé

  4. Jak vytisknout text z databáze se zalomením řádků v šabloně django?