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

Azure Synapse SQL池跨库访问:从PoolB访问PoolA中Customers表

从Synapse SQL PoolB访问PoolA中Customers表的实现方案

核心结论

可以从PoolB访问PoolA中的Customers表,CREATE EXTERNAL DATA SOURCE方法是支持的,以下是具体配置步骤和语法:

前提条件

  • 两个SQL池需处于同一Azure Synapse工作区(跨工作区需额外配置网络和权限,同一工作区操作更简便)
  • 操作账号在PoolB中拥有CONTROL权限,在PoolA中拥有目标表的SELECT权限

具体操作步骤

1. 在PoolB中创建数据库范围凭据

根据身份验证方式选择对应的创建语句:

-- SQL身份验证方式
CREATE DATABASE SCOPED CREDENTIAL PoolACredential
WITH IDENTITY = '你的SQL账号', SECRET = '账号密码';

-- Azure AD托管标识方式
CREATE DATABASE SCOPED CREDENTIAL PoolACredential
WITH IDENTITY = 'Managed Identity';

2. 创建指向PoolA的外部数据源

CREATE EXTERNAL DATA SOURCE PoolASource
WITH (
    LOCATION = 'sqlserver://<你的Synapse工作区名称>.sql.azuresynapse.net',
    DATABASE_NAME = 'PoolA', -- 替换为PoolA的实际数据库名
    CREDENTIAL = PoolACredential
);

3. 创建映射到Customers表的外部表

需保证列定义与PoolA中Customers表完全一致:

CREATE EXTERNAL TABLE dbo.Customers (
    -- 以下列仅为示例,需替换为实际表的列结构
    CustomerID INT,
    CustomerName VARCHAR(100),
    Email VARCHAR(200),
    RegisterDate DATE
)
WITH (
    LOCATION = 'dbo.Customers', -- PoolA中表的schema+表名
    DATA_SOURCE = PoolASource
);

4. 验证访问权限

创建完成后直接查询外部表即可:

SELECT * FROM dbo.Customers;

注意事项

  • 外部表的列名、数据类型、顺序必须与PoolA中的源表完全匹配,否则会出现查询错误
  • 使用Azure AD托管标识时,需确保该标识在PoolA中被授予Customers表的SELECT权限
  • 若工作区启用了专用终结点,需配置网络规则允许两个SQL池之间的通信

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:57:37