.... не распознанная опция таблицы подсказок. .... убедитесь, что режим совместимости вашей базы данных установлен на 90. " - PullRequest
0 голосов
/ 03 мая 2020

Я получаю частые ошибки в коде, где написано

CustomerSales не является опознанной опцией табличных подсказок. Если он предназначен в качестве параметра для табличной функции, убедитесь, что для режима совместимости базы данных установлено значение 90.

Это произошло с несколькими другими таблицами, например, Hires, CustomerNumbers и т. Д. c.

Я натолкнулся на это предложение в Google, но я не уверен, что это лучшее, что можно сделать? Или что могло быть причиной ошибки в первую очередь?

Может ли кто-нибудь сообщить, что может вызвать этот тип ошибки и лучшее решение?

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver15

Пример кода, с которым я получаю сообщение об ошибке:

WITH CustomerAges AS 
(
    SELECT 
        P.FirstName, P.LastName,        
        FLOOR (DATEDIFF(DAY, PD.BirthDate, GETDATE()) / 365.25) AS AGE          
    FROM 
        Sales.vPersonDemographics PD        
    INNER JOIN 
        Person.Person P ON P.BusinessEntityID = PD.BusinessEntityID
)
SELECT 
    *, 
    CASE
        WHEN Age IS NULL THEN 'Unknown Age'         
        WHEN Age BETWEEN 0 and 17 THEN 'Under 18'       
        WHEN Age BETWEEN 18 and 24 THEN '18 - 24'       
        WHEN Age BETWEEN 25 and 34 THEN '25 - 34'       
        WHEN Age BETWEEN 35 and 49 THEN '35 - 49'       
        WHEN Age BETWEEN 50 and 64 THEN '50 - 64'       
        ELSE 'Over 65'      
     END AS AgeRange  
 FROM 
     CustomerAges
...