微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

文档中显示的 sql 代码未在 azure synapse dedicate sql pool 上运行

如何解决文档中显示的 sql 代码未在 azure synapse dedicate sql pool 上运行

我有以下link

当我复制粘贴以下语法时

-- Create DimProductCategory PK
ALTER TABLE [dbo].[DimProductCategory] WITH CHECK ADD 
    CONSTRAINT [PK_DimProductCategory_ProductCategoryKey] PRIMARY KEY CLUSTERED 
    (
        [ProductCategoryKey]
    )  ON [PRIMARY];
GO

语法 WITH CHECK ADD 不起作用。此外,文档中的许多语法都不起作用,想知道为什么它不适用于 sql 池。是否有其他方法或任何其他与 azure 相关的文档。

解决方法

该语法不适用于 Azure Synapse Analytics 专用 SQL 池,您将收到以下错误:

Msg 103010,级别 16,状态 1,第 1 行解析错误:第 2 行,列: 40:'WITH' 附近的语法不正确。

Msg 104467,Level 16,State 1,Line 1 强制唯一约束是 不支持。要创建非强制唯一约束,您必须 在语句中包含 NOT ENFORCED 语法。

编写此语法的方法是使用 ALTER TABLE 添加非集群和非强制主键,例如

ALTER TABLE [dbo].[DimProductCategory] 
    ADD CONSTRAINT [PK_DimProductCategory_ProductCategoryKey] 
        PRIMARY KEY NONCLUSTERED ( [ProductCategoryKey] ) NOT ENFORCED;

然而,由于该表是一个维度,我还建议将其分布更改为 REPLICATE,您必须在表定义中执行此操作。所以整个声明将是这样的:

CREATE TABLE [dbo].[DimProductCategory](
    [ProductCategoryKey] [int] IDENTITY(1,1) NOT NULL UNIQUE NOT ENFORCED,[ProductCategoryAlternateKey] [int] NULL,[EnglishProductCategoryName] [nvarchar](50) NOT NULL,[SpanishProductCategoryName] [nvarchar](50) NOT NULL,[FrenchProductCategoryName] [nvarchar](50) NOT NULL
)
WITH (
    DISTRIBUTION = REPLICATE,CLUSTERED INDEX( [ProductCategoryKey] )
)

在实验室中转换其余语法对您来说将是一个很好的练习。外键也不起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。