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

如何在Azure Synapse Link同步的Dataverse表上创建视图(无需ADF管道)

解决方案:在Synapse Analytics中使用Dataverse同步表创建视图

问题原因

通过Azure Synapse Link for Dataverse同步到Synapse的表所在数据库为复制数据库,这类数据库处于只读状态,不允许直接执行CREATE/ALTER VIEW操作。

无需ADF管道的可行方案

1. 使用Synapse Serverless SQL池创建视图

Serverless SQL池不受复制数据库的只读限制,可直接基于Dataverse同步的Delta存储文件创建视图。示例语句如下(需替换占位符内容):

CREATE VIEW [dbo].[HotelRooms]
AS
SELECT h.HotelName, r.RoomName
FROM OPENROWSET(
    BULK 'https://<你的存储账户>.dfs.core.windows.net/<Synapse Link容器>/<Dataverse环境>/dbo.Hotel/*',
    FORMAT = 'DELTA'
) AS h
INNER JOIN OPENROWSET(
    BULK 'https://<你的存储账户>.dfs.core.windows.net/<Synapse Link容器>/<Dataverse环境>/dbo.Room/*',
    FORMAT = 'DELTA'
) AS r
ON h.<关联列名> = r.<关联列名>;

注意:需补充正确的表关联列,否则会出现语法错误。

2. 专用SQL池中创建外部表再生成视图

通过外部表指向Dataverse同步的存储文件,绕开复制数据库的只读限制:

  • 第一步:创建外部数据源、文件格式及外部表
-- 创建外部数据源
CREATE EXTERNAL DATA SOURCE DataverseSyncStorage
WITH (
    LOCATION = 'abfss://<容器名>@<存储账户>.dfs.core.windows.net/<Synapse Link容器>/<Dataverse环境>/',
    TYPE = HADOOP
);

-- 创建Delta格式的外部文件格式
CREATE EXTERNAL FILE FORMAT DeltaFormat
WITH (
    FORMAT_TYPE = DELTA
);

-- 创建Hotel外部表(需补充完整列定义)
CREATE EXTERNAL TABLE dbo.Hotel_External (
    HotelName NVARCHAR(255),
    <其他列定义>,
    <关联列名> <对应数据类型>
)
WITH (
    LOCATION = 'dbo.Hotel/',
    DATA_SOURCE = DataverseSyncStorage,
    FILE_FORMAT = DeltaFormat
);

-- 创建Room外部表(需补充完整列定义)
CREATE EXTERNAL TABLE dbo.Room_External (
    RoomName NVARCHAR(255),
    <其他列定义>,
    <关联列名> <对应数据类型>
)
WITH (
    LOCATION = 'dbo.Room/',
    DATA_SOURCE = DataverseSyncStorage,
    FILE_FORMAT = DeltaFormat
);
  • 第二步:基于外部表创建视图
CREATE VIEW dbo.HotelRooms
AS
SELECT h.HotelName, r.RoomName
FROM dbo.Hotel_External h
INNER JOIN dbo.Room_External r
ON h.<关联列名> = r.<关联列名>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:15:57