azure - 文档中显示的sql代码未在azure synapse专用sql池上运行

标签 azure azure-synapse

我有以下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, Level 16, State 1, Line 1 Parse error at line: 2, column: 40: Incorrect syntax near 'WITH'.

Msg 104467, Level 16, State 1, Line 1 Enforced unique constraints are not supported. To create an unenforced unique constraint you must include the NOT ENFORCED syntax as part of your statement.

编写此语法的方法是使用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] )
)

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

关于azure - 文档中显示的sql代码未在azure synapse专用sql池上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68306457/

相关文章:

azure - 无法将 QnA 制造商连接到 Bot Framework Emulator

.net - 将 Azure AD B2C 与机器人结合使用

c# - Service Fabric 服务调试问题

Azure 到 Auth0 连接 - 提供的客户端 key 无效

sql-server - 如何查找 Azure Synapse 专用 SQL 池中分区的范围值

Azure SQL 数据仓库 - 参数化 SSIS 源查询

azure - 使用 shell 脚本在 DevOps 中编辑文件并替换字符串

apache-spark-sql - Synapse Lake 数据库 View 在 SQL 池中不可用?

azure - 我们可以从管道 azure synapse 在无服务器池中执行 sql 查询吗?

Azure 数据工厂 - 处理大小为 4194304 的查找事件限制