Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nieprawidłowa składnia w pobliżu słowa kluczowego „current_timestamp” — ale tylko w jednej bazie danych

Sprawdź poziom zgodności bazy danych (nie było w 100% jasne, czy problem występował w DB1 lub podczas wywoływania funkcji w DB1).

Założę się, że poziom zgodności wynosi 80 w dowolnej bazie danych, w której występuje problem; SQL Server 2000 nie pozwalał na przekazywanie funkcji bezpośrednio do UDF w ten sposób (i mamy ten sam problem z wywoływaniem niektórych funkcji dynamicznego zarządzania, jeśli poziom zgodności wynosi 80 - patrz ten wpis na blogu i komentarze ). Ta baza danych musi zostać przywrócona lub dołączona po utworzeniu kopii zapasowej lub odłączeniu od 2000. Lub po aktualizacji z 2000. Możesz sprawdzić aktualną zgodność w ten sposób:

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

Jeśli okaże się, że wynosi <100, możesz powiedzieć:

ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;

Ale powinieneś to zrobić tylko wtedy, gdy wiesz, że niższa zgodność nie jest potrzebna z jakiegoś innego powodu - i powinieneś sprawdzić w systemie testowym, czy baza danych działa zgodnie z oczekiwaniami na nowym poziomie zgodności. Jeśli masz problemy, zawsze możesz to zmienić z powrotem, ale lepiej być przygotowanym.

Jeśli nie chcesz zadzierać z poziomem zgodności, możesz nieznacznie zmienić swoją logikę.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zalogowani użytkownicy po pewnym czasie zostają wylogowani

  2. Msg 4834 Nie masz uprawnień do korzystania z instrukcji ładowania zbiorczego

  3. Alert SQL, gdy procedura składowana jest wykonywana zbyt długo

  4. Instrukcja PRINT w T-SQL

  5. @@IDENTITY, SCOPE_IDENTITY(), OUTPUT i inne metody odzyskiwania ostatniej tożsamości