首页 > 解决方案 > 连接到 Azure Synapse SQL On-Demand 导致“不支持 syscharsets”错误

问题描述

我使用SQL PoolSQL On-Demand Pool运行 Azure Synapse Analytics 。两者都在 Azure 托管的虚拟专用网络中运行,并且已经为 SQL 池以及 SQL On-Demand 组件设置了所谓的专用终结点。

首先,我尝试使用ADO.NET完美的方式连接到两个私有端点。

Connection Test via ADO.NET -> success

之后,我连接了一个只支持 ODBC 的 BI 工具。

Connection Test via ODBC -> failed

无论如何,与 SQL 池的 ODBC 连接工作正常。

与 SQL On-Demand 组件的 ODBC 连接导致连接错误"syscharsets is not supported"

已经尝试过各种 ODBC 设置但没有成功,有什么想法吗?

谢谢。

标签: azureodbcazure-sql-databaseazure-synapse

解决方案


我想回复您的询问,因为它适用于 Azure Synapse Analytics SQL 池SQL On-Demand Workspace之间的区别:

SQL 池表示使用 Synapse SQL 时正在供应的分析资源的集合。SQL 池的大小由数据仓库单元 (DWU) 决定。

SQL 池有一个运行的 SQL 引擎实例,其中 SQL 按需工作区是 Azure Data Lake 的一个实例,具有有限的 T-SQL 支持

SQL 按需提供 T-SQL 查询表面区域,在某些方面略有增强/扩展,以适应查询半结构化和非结构化数据的体验。此外,由于按需 SQL 的设计,不支持 T-SQL 语言的某些方面,例如,当前不支持 DML 功能。

请在 SQL 池中运行以下命令,例如:

USE master;
SELECT  db.name [Database]
,       ds.edition [Edition]
,       ds.service_objective [Service Objective]
  FROM    sys.database_service_objectives   AS ds
  JOIN    sys.databases                     AS db ON ds.database_id = db.database_id;

以及按需工作区中的以下内容:

/* Script to get full version information */
/* */
SELECT  SERVERPROPERTY('ProductVersion') AS "Product Version", 
    SERVERPROPERTY('ProductLevel') AS "Product Level", 
    SERVERPROPERTY('EngineEdition') AS "Engine Edition", 
    SERVERPROPERTY('Edition') AS "Edition",
    @@Version AS "Version";

由于sys.syscharsets (Transact-SQL) 是 SQL 引擎的一项功能,而按需工作区仅提供类似 T-SQL 的接口来查询结构化和非结构化数据,以下强调不支持的内容:

SQL on-demand 没有本地存储,只有元数据对象存储在数据库中。因此,不支持与以下概念相关的 T-SQL:

  • 触发器
  • 物化视图
  • 与视图和安全性相关的 DDL 语句
  • DML 语句

“在按需工作区的情况下,为了执行 SQL 按需查询,推荐的工具是Azure Data StudioAzure Synapse Studio。”

将客户端应用程序连接到按需工作区并不是唯一的,但它不会提供与 SQL 池相同的体验,因为 SQP 池是由SERVERPROPERTY定义的正在运行的 SQL 引擎实例。

寻找Edition

服务器属性:版本

对于EngineEdition

SERVERPROPERTY:EngineEdition

附加信息:支持的驱动程序和连接字符串 ( Link )。

关于将客户端应用程序连接到按需工作区的用例的信息不多,但如果您需要分享其他信息,请酌情详细说明。


推荐阅读