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

Azure SQL弹性池中跨数据库查询无法正常执行

解决Azure SQL弹性池跨库查询错误的方案

错误原因

Azure SQL数据库(含弹性池部署的实例)不支持传统SQL Server本地实例的直接跨库引用语法(如AppVisionLens.AVL.PRJ_ConfigurationProgress),必须通过**弹性查询(Elastic Query)**实现跨库数据访问。

具体实现步骤

1. 在存储过程所在数据库创建数据库范围凭据

若两个数据库使用同一Azure SQL服务器的登录账号,可基于该账号创建凭据:

CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '你的SQL服务器登录名',
SECRET = '你的登录密码';

2. 创建指向目标数据库的外部数据源

CREATE EXTERNAL DATA SOURCE AppVisionLensDB
WITH (
    TYPE = RDBMS,
    LOCATION = '你的Azure SQL服务器名.database.windows.net',
    DATABASE_NAME = 'AppVisionLens',
    CREDENTIAL = ElasticDBQueryCred
);

3. 创建映射目标表的外部表

需与目标数据库中AVL.PRJ_ConfigurationProgress的结构完全一致:

CREATE EXTERNAL TABLE AVL_PRJ_ConfigurationProgress (
    -- 复制目标表的所有列定义,示例如下:
    ID INT,
    ProgressStatus NVARCHAR(50),
    UpdateTime DATETIME
)
WITH (
    DATA_SOURCE = AppVisionLensDB,
    SCHEMA_NAME = 'AVL',
    OBJECT_NAME = 'PRJ_ConfigurationProgress'
);

4. 修改存储过程,查询外部表

将原语句SELECT * FROM AppVisionLens.AVL.PRJ_ConfigurationProgress替换为:

SELECT * FROM AVL_PRJ_ConfigurationProgress;

额外注意事项

  • 确保创建外部数据源的账号拥有目标数据库的读取权限
  • 外部表的列结构必须与目标表完全匹配,否则会触发查询错误
  • 若目标表结构变更,需同步更新外部表的定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:24:22