You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Fabric中SQL主键约束语法与无效对象名问题求助

Microsoft Fabric数据仓库脚本问题解决方案

问题1:PRIMARY KEY NONCLUSTERED ... NOT ENFORCED语句警告

在Fabric数据仓库中,PRIMARY KEY NONCLUSTERED ... NOT ENFORCED是定义逻辑主键,引擎不会实际强制执行约束,因此出现警告属于预期行为,不影响功能正常运行。若需消除警告,可按以下方式处理:

  • 确保主键列设置为NOT NULL:即使约束不强制,保持列非空能提升数据一致性,执行语句:
    ALTER TABLE YourTargetTable ALTER COLUMN YourPrimaryKeyColumn INT NOT NULL;
    
  • 临时关闭ANSI警告(仅针对该主键语句):
    SET ANSI_WARNINGS OFF;
    ALTER TABLE YourTargetTable ADD PRIMARY KEY NONCLUSTERED (YourPrimaryKeyColumn) NOT ENFORCED;
    SET ANSI_WARNINGS ON;
    
  • 若操作的是外部表或Lakehouse表,NOT ENFORCED是必填项,此类警告可直接忽略。

问题2:视图创建时"Invalid object name 'ExternalData.dbo.staging_sales'"报错

该错误源于对象引用格式错误或外部表未正确创建,解决步骤如下:

  1. 确认外部数据源存在:执行语句查看已创建的外部数据源:
    SELECT name FROM sys.external_data_sources;
    
    检查是否有名为ExternalData的外部数据源,若不存在需先按教程步骤创建。
  2. 核查外部表的完整归属:执行语句查看所有外部表的详细信息:
    SELECT name, data_source_id, schema_id FROM sys.external_tables;
    
    对照sys.schemas和sys.external_data_sources的ID,确定staging_sales表的正确引用格式(应为[ExternalDataSourceName].[SchemaName].[staging_sales])。
  3. 修正视图中的引用:若外部数据源为ExternalData、表在dbo schema下,确保视图语句中引用为ExternalData.dbo.staging_sales;如果是Lakehouse中的表,引用格式应为[LakehouseName].[SchemaName].[staging_sales]。
  4. 切换正确的数据库上下文:执行USE YourDataWarehouseName;确保当前操作在目标数据仓库中,而非Lakehouse或其他数据库。
  5. 无需手动创建ExternalData schema:该名称应为外部数据源名称,不是schema,手动创建schema无法解决外部表引用问题。

内容的提问来源于stack exchange,提问作者HamidBee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:15:08