如何解决文档中显示的 sql 代码未在 azure synapse dedicate sql pool 上运行
当我复制粘贴以下语法时
-- 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 举报,一经查实,本站将立刻删除。