DROP TABLE IF EXISTS无法在Azure SQL数据仓库上运行

时间:2018-02-13 23:12:30

标签: azure-sql-database azure-sqldw

我使用SQL Server管理工作室为Azure数据仓库生成脚本。我选择了版本的Azure数据仓库,它在脚本下面生成删除表(如果存在)并创建表。但是,脚本无法通过验证。请参阅下面的错误消息。

DROP TABLE IF EXISTS Table1
GO

错误讯息:

  

在行处解析错误:2,列:12:'IF'附近的语法不正确。

3 个答案:

答案 0 :(得分:4)

documentation所示,Azure SQL数据仓库目前不支持DROP TABLE IF EXISTS,如今:

-- Syntax for SQL Server and Azure SQL Database  
DROP TABLE [ IF EXISTS ] [ database_name . [ schema_name ] . | schema_name . ]  
table_name [ ,...n ]  
[ ; ]

-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse    
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name   
[;] 

答案 1 :(得分:2)

鲍勃的回答是正确的。我尝试添加以下内容作为评论,但没有格式化它看起来很糟糕。

您可以使用以下语法作为替代方法:

if object_id ('dw.dim_location','U') is not null drop table dw.dim_location;

答案 2 :(得分:1)

来自Microsoft's documentation的示例:

IF OBJECT_ID('tempdb..#stats_ddl') IS NOT NULL
BEGIN
    DROP TABLE #stats_ddl
END

stats_ddl替换为您命名的临时表。

将其转换为类似于Ron的示例的单行代码也可以:

IF OBJECT_ID('tempdb..#stats_ddl') IS NOT NULL DROP TABLE #stats_ddl;