在SSMS 17.3中交叉应用语法错误,SSMS 17.1中没有错误

时间:2017-12-13 17:06:27

标签: sql-server tsql azure-sql-database cross-apply

我有完全相同的查询。适用于17.1版本的SSMS,但不适用于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:'('

附近的语法不正确

唯一的另一个不同是SSMS的17.3版本在Azure中的VM上。

否则它们完全相同。

当我研究某个原因时,我会因连接问题获得100%的结果,而事实并非如此。

1 个答案:

答案 0 :(得分:1)

最新版本的SSMS是17.4。为了在使用SSMS时获得SQL Azure数据库的最佳体验,请下载并仅使用最新版本的SSMS。请从here下载SSMS 17.4,不要使用以前的版本。

此外,临时表在Azure SQL数据库上具有不同的行为,如here所述。