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

Azure Synapse无服务器SQL池复制数据库创建外部文件格式报错

解决Azure Synapse无服务器SQL池创建外部表的"replicated database"错误

问题原因

无服务器SQL池的系统数据库(比如默认的master)属于复制型数据库,这类数据库限制了CREATE EXTERNAL FILE FORMAT、CREATE EXTERNAL DATA SOURCE等外部对象的创建操作,只能在用户手动创建的数据库中执行这些命令。

具体解决步骤

  1. 创建用户自定义数据库
    先在无服务器SQL池中创建一个专属数据库,示例脚本:
    CREATE DATABASE MySynapseUserDB;
    
  2. 切换到新数据库上下文
    执行脚本切换操作数据库:
    USE MySynapseUserDB;
    
  3. 重新执行外部表相关操作
    在这个用户数据库中,按流程创建外部数据源、文件格式和外部表即可,示例流程:
    • 创建数据库主密钥(首次操作需执行):
      CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourSecurePassword123!';
      
    • 创建数据库范围凭据(用于ADLS访问授权):
      CREATE DATABASE SCOPED CREDENTIAL ADLS_SAS_Cred
      WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
      SECRET = 'your-valid-sas-token-here';
      
    • 创建外部数据源:
      CREATE EXTERNAL DATA SOURCE ADLS_DataSource
      WITH (
          LOCATION = 'abfss://your-container@your-storage-account.dfs.core.windows.net/',
          CREDENTIAL = ADLS_SAS_Cred
      );
      
    • 创建外部文件格式:
      CREATE EXTERNAL FILE FORMAT Parquet_File_Format
      WITH (
          FORMAT_TYPE = PARQUET,
          DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
      );
      
    • 创建外部表:
      CREATE EXTERNAL TABLE Product_Data (
          ProductID INT,
          ProductName VARCHAR(200),
          Category VARCHAR(100)
      )
      WITH (
          LOCATION = 'data/product-data/',
          DATA_SOURCE = ADLS_DataSource,
          FILE_FORMAT = Parquet_File_Format
      );
      

额外注意事项

  • 确保操作上下文是无服务器SQL池,不要混淆到专用SQL池环境。
  • 若使用托管身份访问ADLS,需调整数据库范围凭据的创建逻辑,并确保身份拥有ADLS的读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:35:14