Синтаксическая ошибка перекрестного применения в SSMS 17.3, нет ошибок в SSMS 17.1

У меня точно такой же запрос. Работает на версии SSMS 17.1, но не на 17.3.

IF OBJECT_ID('tempdb..#Orders','U') IS NOT NULL
    DROP TABLE #Orders

-- DDL and sample data for UNPIVOT Example 1
CREATE TABLE #Orders
(
     Orderid INT IDENTITY, 
     GiftCard INT, 
     TShirt INT, 
     Shipping INT  
)

INSERT INTO #Orders
    SELECT 1, NULL, 3 
    UNION ALL 
    SELECT 2, 5, 4 
    UNION ALL 
    SELECT 1, 3, 10

SELECT * FROM #Orders

SELECT 
    OrderID, ProductName, ProductQty
FROM 
    #Orders
CROSS APPLY 
    (VALUES ('GiftCard', GiftCard), ('TShirt', TShirt),
            ('Shipping', Shipping)) x (ProductName, ProductQty)
WHERE 
    ProductQty IS NOT NULL

DROP TABLE #Orders

Это работает без проблем на 17.1. Если тот же запрос выполняется на 17.3, возвращается следующая ошибка

Ошибка синтаксического анализа в строке: 16, столбце: 14: неверный синтаксис рядом с '('

Единственное отличие состоит в том, что версия 17.3 SSMS находится на виртуальной машине в Azure.

В остальном они точно такие же.

Когда я исследую причину, я получаю 100% результатов для проблем с подключением, что не так.


person jpf5046    schedule 13.12.2017    source источник
comment
Версия SSMS значения не имеет. Версия SQL Server, к которой вы подключаетесь, очень важна.   -  person a_horse_with_no_name    schedule 14.12.2017
comment
Запустите select @@version на каждой версии SQL Server и опубликуйте ее здесь.   -  person wBob    schedule 14.12.2017
comment
Версия, в которой работает запрос, — Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) Oct 20 2015 15:36:27 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) , а версия, в которой запрос не работает, — Microsoft SQL Azure (RTM) - 12.0.2000.8 Nov 29 2017 09:37:51 Copyright (C) 2017 Microsoft Corporation .   -  person jpf5046    schedule 14.12.2017
comment
Судя по комментариям, протокол RTM SQL, вероятно, не использует cross apply таким же образом?   -  person jpf5046    schedule 14.12.2017


Ответы (1)


Последняя версия SSMS — 17.4. Чтобы максимально эффективно работать с базой данных SQL Azure при использовании SSMS, загрузите и используйте только последнюю версию SSMS. Загрузите SSMS 17.4 с здесь и не используйте предыдущие версии.

Кроме того, временные таблицы ведут себя в базе данных SQL Azure иначе, как описано здесь.

person Alberto Morillo    schedule 14.12.2017