8

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

DROP TABLE IF EXISTS Table1
GO

错误信息:

第 2 行第 12 列的解析错误:“IF”附近的语法不正确。

4

4 回答 4

7

文档中所述,DROP TABLE IF EXISTSAzure SQL 数据仓库目前不支持,截至目前:

-- 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   
[;] 
于 2018-02-14T09:18:29.250 回答
6

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

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

if object_id ('dw.dim_location','U') is not null drop table dw.dim_location;
于 2018-02-14T10:20:46.147 回答
4

Microsoft 文档中的示例:

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;
于 2019-10-14T22:33:56.377 回答
0

只是为了添加另一个选项,下面的代码应该适用于本地 SQL Server 和 Azure SQL DB,这是从 Azure Data Studio 中选择“脚本作为 Drop”时的选项:

--
--
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[your_table]') AND type in (N'U'))
DROP TABLE [dbo].[your_table]
--
;
于 2021-10-12T17:10:07.180 回答