适用于:✅ Microsoft Fabric 中的 SQL 分析终结点和仓库
在 Microsoft Fabric 中,用户通过表格数据流(TDS)终结点访问 SQL 分析终结点或仓库。 现代 Web 应用程序与 SQL Server TDS 端点交互。 在 Microsoft Fabric 设置中,此终结点标记为 SQL 连接字符串。
小窍门
有关使用常用工具进行连接的教程,请参阅 “连接到 Fabric 数据仓库”。
向 Fabric 中的仓库进行身份验证
在 Microsoft Fabric 中,SQL 连接字符串支持两种类型的经过身份验证的用户:
- Microsoft Entra ID 用户主体或用户标识
- Microsoft Entra ID 服务主体
有关详细信息,请参阅 Microsoft Entra 身份验证作为 Microsoft Fabric 中 SQL 身份验证的替代方法。
SQL 连接字符串要求打开 TCP 端口 1433。 TCP 1433 是标准的 SQL Server 端口号。 Warehouse 使用 Microsoft SQL Server 表格数据流(TDS)协议,通过 TCP 端口 1433。 在使用协议响应防火墙或应用层检测的环境中,将SQL流量配置并检测为Microsoft SQL Server(MSSQL/TDS)流量,而非HTTPS流量。
一些防火墙区分TCP端口访问和应用协议检查。 在这些环境中,如果防火墙被配置为将该端口上的流量视为 HTTPS 流量,那么仅允许 TCP 1433 端口可能还不够。
SQL 连接字符串还遵循用于数据访问的仓库或 Lakehouse SQL 分析终结点安全模型。 用户可以访问他们有权访问的所有对象的数据。
有关 SQL 分析终结点中安全性的详细信息,请参阅 适用于 SQL 分析终结点的 OneLake 安全性。
最佳做法
向应用程序和 ETL 作业添加重试,使其更具弹性。 有关详细信息,请参阅以下文档:
- 重试模式 - Azure 体系结构中心
- 处理暂时性错误 - Azure SQL 数据库
- 步骤 4:使用 ADO.NET 建立与 SQL 的弹性连接 - 适用于 SQL Server 的 ADO.NET 提供程序
- 步骤 4:使用 PHP 弹性连接到 SQL - 适用于 SQL Server 的 PHP 驱动程序
- 使用服务标记进行防火墙清理,如以下部分所述。
- 连接时,应提供仓库项名称作为 初始目录 或 数据库名称 。 如果未提供
InitialCatalog连接字符串 属性,则初始连接上下文将为master仓库。
允许通过防火墙使用 Azure 服务标记
若要通过防火墙启用连接,需要允许 Power BI 服务标记和 SQL 服务标记。 有关详细信息,请参阅 Power BI 服务标记和服务标记。
不能单独使用 TDS 终结点的完全限定域名(FQDN)。
重要
如果您的组织使用 Azure 防火墙 应用规则或类似的协议响应型防火墙,将仓库流量配置为 MSSQL/TDS 流量。 在端口1433上将SQL流量配置为HTTPS流量,即使允许网络访问该端口,也可能阻碍成功连接。
防火墙与应用层检查的考虑
一些企业防火墙解决方案除了传统的IP和端口过滤外,还执行应用层检测。
配置仓库防火墙策略时:
- 允许端口1433进行TCP外站连接。
- 确保SQL流量被视为Microsoft SQL Server(MSSQL/TDS)流量。
- 不要把连接到仓库的SQL连接配置为1433端口的HTTPS流量。
- 在防火墙策略更改部署后验证连接性。
注意
使用 Azure 防火墙应用程序规则的客户应为 SQL 流量配置 SQL 感知筛选。 Azure 防火墙 支持 MSSQL 协议处理和 SQL FQDN 过滤以处理 SQL 工作负载。
基于FQDN的防火墙过滤
限制使用完全限定域名(FQDN)的出站访问的组织可以使用防火墙规则,只允许经过批准的SQL目的地。
对于使用 Azure 防火墙 的环境:
- 支持通过 MSSQL 应用程序规则实现 SQL 感知的 FQDN 过滤。
- FQDN 过滤可配合端口 1433 限制使用,以限制出站 SQL 连接。
- 确保本文中记录的所有 Warehouse 端点都已添加到防火墙允许列表中。
实现细节请参见“用SQL FQDNS配置Azure 防火墙应用规则。
注意事项和限制
- 不支持 SQL 身份验证。
- Microsoft Fabric Warehouse 不支持多重活动结果集(MARS)。 MARS 默认处于禁用状态。 如果
MultipleActiveResultSets包含在连接字符串中,请将其删除或设置为 false。 - 如果收到错误代码 24804,并显示消息“由于系统更新而无法完成操作。 关闭此连接,再次登录,然后重试该操作,或出现错误代码 6005,并显示消息“正在关闭”。 在 SQL Server 上执行失败。 如果需要进一步支持,请联系 SQL Server 团队。”,这是由于临时连接丢失,可能是由于系统部署或重新配置。 若要解决此问题,请重新登录,然后重试。 若要了解如何在应用程序中构建复原能力和重试,请参阅最佳做法。
- 如果收到错误代码 6008,并显示消息“工作区暂时不可用。 这可能是由于系统维护或内部操作造成的。 请重新建立连接。“此错误表示临时连接中断。 若要解决此问题,请重新建立连接,再次登录,然后重试该操作。 此条件是暂时性的,并不指示查询或应用程序中的故障。
- 不支持来自 SQL Server 的链接服务器连接。
InitialCatalog 的连接行为
2026 年 5 月,Microsoft 更新了 Fabric Data Warehouse 和 SQL 分析终结点的连接行为,使 InitialCatalog连接字符串属性成为可选项。 目前,如果未提供 master 属性,用户将连接到 InitialCatalog 系统数据库。 在Fabric Data Warehouse中,只能连接到 master 数据库,不能修改 master 数据库,也不能在 master 数据库中创建、更改或删除用户对象。
可以使用 USE Transact-SQL 语法在连接到 master 后更改连接仓库上下文,使用 DB_NAME() 函数来确定当前仓库。 例如:
SELECT DB_NAME(); --returns name of current warehouse context
GO
USE [ContosoWarehouse];
GO
SELECT DB_NAME(); --returns name of current warehouse context
GO
下表概述了在连接字符串中指定或省略 InitialCatalog 属性时Fabric Data Warehouse和 SQL 分析终结点的更新连接行为。
| 输入场景 | 2026 年 5 月之前 | 当前行为 |
|---|---|---|
| 提供的现有仓库名称 | 连接到指定的仓库 | 无更改 - 连接到指定的仓库 |
| 提供的现有仓库 ID | 连接到指定的仓库 | 无更改 - 连接到指定的仓库 |
InitialCatalog 未提供属性 |
连接到工作区中的非确定性仓库 | 连接至 master |
InitialCatalog = master |
连接到工作区中的非确定性仓库 | 连接至 master |
InitialCatalog 属性中的仓库不存在 |
连接到工作区中的非确定性仓库 | 引发一个错误,指示不存在仓库 |
错误处理
如果工作区中不存在任何仓库,并且在未指定有效仓库的情况下尝试连接,用户将看到以下错误:“用户“<令牌标识的主体>”登录失败”。 原因:身份验证成功,但找不到数据库,或者你没有足够的权限连接到它。
以下屏幕截图显示了在将无效仓库名称提供为 InitialCatalog 时,SSMS 中出现的错误: