Azure SQL 和 Microsoft SQL Server Microsoft Graph 连接器

Microsoft SQL Server 或 Azure SQL Microsoft Graph 连接器允许组织从本地SQL Server数据库或云中的 Azure SQL 实例中托管的数据库发现数据并编制索引。 连接器为Microsoft搜索和智能 Microsoft 365 Copilot 副驾驶®中的指定内容编制索引。 为了使索引与源数据保持同步,它支持定期完全爬网和增量爬网。 使用这些 SQL 连接器,还可以限制对某些用户的搜索结果的访问。

本文适用于 Microsoft 365 管理员或配置、运行和监视Azure SQL或Microsoft SQL Server Microsoft Graph 连接器的任何人。

功能

  • 使用 SQL 查询为 MS SQL Server 或 Azure SQL 数据库中的记录编制索引。
  • 使用 SQL 查询中添加的用户或组列表为每个记录指定访问权限。
  • 使最终用户能够提出与 Copilot 中的索引记录相关的问题。
  • Copilot 中使用语义搜索 ,使用户能够根据关键字、个人偏好和社交关系查找相关内容。

限制

  • Microsoft SQL Server连接器:本地数据库必须运行SQL Server版本 2008 或更高版本。
  • Azure SQL连接器:托管Azure SQL数据库) 的 Microsoft 365 订阅和 Azure 订阅 (必须位于同一Microsoft Entra ID内。 不支持跨租户数据流。
  • 为了支持高爬网速度和更好的性能,连接器构建为仅支持 OLTP (联机事务处理) 工作负荷。 OLAP (联机分析处理) 工作负荷,这些工作负载在 40 秒超时后未执行提供的 SQL 查询,并且不受支持。
  • 仅使用用户主体名称 (UPN) 、Microsoft Entra ID或 Active Directory 安全性来支持 ACL。
  • 不支持为数据库列内的丰富内容编制索引。 此类内容的示例包括 HTML、JSON、XML、Blob 和作为数据库列内的链接存在的文档分析。

先决条件

  • 你必须是组织的 Microsoft 365 租户的 搜索管理员
  • 安装 Microsoft Graph 连接器代理 (仅适用于 MS SQL 连接器) :若要访问Microsoft SQL Server,必须安装和配置连接器代理。 有关详细信息 ,请参阅安装 Microsoft Graph 连接器代理
  • 服务帐户:若要连接到 SQL 数据库并允许 Microsoft Graph 连接器定期更新记录,需要一个向服务帐户授予读取权限的服务帐户。

注意

如果在配置 Microsoft SQL Server 连接器时使用 Windows 身份验证,则尝试登录的用户需要具有对安装了连接器代理的计算机的交互式登录权限。 有关详细信息,请参阅 登录策略管理

安装程序入门

1. 显示名称

显示名称用于标识 Copilot 中的每个引文,帮助用户轻松识别关联的文件或项目。 显示名称还表示受信任的内容。 显示名称也用作 内容源筛选器。 此字段存在默认值,但你可以将其自定义为组织中的用户可识别的名称。

2. SQL服务器

若要连接到 SQL 数据,需要 SQL Server 地址和数据库名称。

3.身份验证类型

Azure SQL连接器仅支持Microsoft Entra ID OpenID Connect (OIDC) 身份验证来连接到数据库。

仅为 Azure SQL Microsoft Graph 连接器注册应用 ()

对于Azure SQL连接器,必须在 Microsoft Entra ID 中注册应用,以允许Microsoft搜索应用和智能 Microsoft 365 Copilot 副驾驶®访问用于编制索引的数据。 若要了解有关注册应用的详细信息,请参阅有关如何 注册应用的 Microsoft Graph 文档。

完成应用注册并记下应用名称、应用程序 (客户端) ID 和租户 ID 后,需要 生成新的客户端密码。 客户端仅显示一次。 请记住,& 安全地存储客户端密码。 在Microsoft搜索和智能 Microsoft 365 Copilot 副驾驶®中配置新连接时,请使用客户端 ID 和客户端密码。

若要将已注册的应用添加到 Azure SQL 数据库,需要:

  1. 登录到 Azure SQL DB。
  2. 打开新的查询窗口。
  3. 通过运行“CREATE USER [app name] FROM EXTERNAL PROVIDER”命令创建新用户。
  4. 通过运行命令“exec sp_addrolemember'db_datareader'、[应用名称]”或“ALTER ROLE db_datareader ADD MEMBER [app name]”,将用户添加到角色。

若要详细了解如何撤销对Microsoft Entra ID中注册的任何应用的访问权限,请参阅删除已注册的应用

仅适用于 Azure SQL Microsoft Graph 连接器的防火墙设置 ()

为了提高安全性,你可以为 Azure SQL 服务器或数据库配置 IP 防火墙规则。 若要详细了解如何设置 IP 防火墙规则,请参阅有关 IP 防火墙规则的文档。 在防火墙设置中添加以下客户端 IP 范围。

地区 Microsoft 365 企业版 Microsoft 365 政府
NAM 52.250.92.252/30, 52.224.250.216/30 52.245.230.216/30, 20.141.117.64/30
EUR 20.54.41.208/30, 51.105.159.88/30 不适用
APC 52.139.188.212/30, 20.43.146.44/30 不适用

4. 面向有限受众推出

如果要先在 Copilot 和其他搜索图面中验证此连接,然后再将此连接部署到有限的用户群,然后再将它推广到更广泛的受众。 若要了解有关有限推出的详细信息, 请单击此处

内容

若要搜索数据库内容,必须在配置连接器时指定 SQL 查询。 这些 SQL 查询需要) 命名要 (源属性编制索引的所有数据库列。 这包括需要执行以获取所有列的任何 SQL 联接。 若要限制对搜索结果的访问,必须在配置连接器时在 SQL 查询中指定访问控制 Lists (ACL) 。

1. 完全爬网 (必需)

a. (“必需) ”和“ACL”列 (可选) 选择数据列

[单击展开]为完整爬网查询选择数据列。

在此步骤中,将配置运行数据库完全爬网的 SQL 查询。 完全爬网选择需要在Microsoft Copilot或搜索中显示的所有列或属性。 还可以指定 ACL 列,以将搜索结果的访问限制为特定用户或组。

提示

若要获取所需的所有列,可以联接多个表。

显示具有示例属性的 OrderTable 和 AclTable 的脚本。

该示例演示了用于保存搜索数据的五个数据列的选择:OrderId、OrderTitle、OrderDesc、CreatedDateTime 和 IsDeleted。 若要设置每行数据的查看权限,可以选择选择以下 ACL 列:AllowedUsers、AllowedGroups、DeniedUsers 和 DeniedGroups。 所有这些数据列还具有 “查询”、“ 搜索”、“ 检索”“优化”选项。

选择数据列,如以下示例查询所示: SELECT orderId, orderTitle, orderDesc, allowedUsers, allowedGroups, deniedUsers, deniedGroups, createdDateTime, isDeleted

SQL 连接器不允许 SELECT 子句中具有非字母字符的列名。 使用别名从列名中删除任何非字母字符。 示例 - SELECT column_name AS columnName

若要管理对搜索结果的访问,可以在查询中指定一个或多个 ACL 列。 SQL 连接器允许你控制每个记录级别的访问。 可以选择对表中的所有记录使用相同的访问控制。 如果 ACL 信息存储在单独的表中,则可能必须与查询中的这些表进行联接。

下面介绍了上述查询中每个 ACL 列的用法。 以下列表介绍了四 种访问控制机制

  • AllowedUsers:此列指定可以访问搜索结果的用户 ID 列表。 在以下示例中,用户列表: john@contoso.com、 keith@contoso.com和 lisa@contoso.com 将仅有权访问 OrderId = 12 的记录。
  • AllowedGroups:此列指定将能够访问搜索结果的用户组。 在以下示例中,组 sales-team@contoso.com 只能访问 OrderId = 12 的记录。
  • DeniedUsers:此列指定 无权 访问搜索结果的用户列表。 在以下示例中,用户 john@contoso.com 和 keith@contoso.com 无权访问 OrderId = 13 的记录,而其他人则有权访问此记录。
  • DeniedGroups:此列指定 无权 访问搜索结果的用户组。 在以下示例中,对 OrderId = 15 的记录进行组 engg-team@contoso.com 和 pm-team@contoso.com 访问,而其他人则有权访问此记录。

显示具有示例属性的 OrderTable 和 AclTable 的示例数据。

b. 支持的数据类型

[单击展开]支持的数据类型列表。

该表汇总了 MS SQL 和 Azure SQL 连接器中支持的 SQL 数据类型。 该表还汇总了支持的 SQL 数据类型的索引数据类型。 若要详细了解Microsoft Graph 连接器支持的索引数据类型,请参阅有关 属性资源类型的文档。

类别 源数据类型 索引数据类型
日期和时间 date
datetime
datetime2
smalldatetime
datetime
精确数字 bigint
int
smallint
tinyint
int64
精确数字 boolean
近似数值 float
实数
double
字符串
varchar
text
string
Unicode 字符串 nchar
nvarchar
ntext
string
字符串集合
varchar
text
stringcollection*
其他数据类型 uniqueidentifier string

*若要将列索引为 StringCollection,需要将字符串强制转换为字符串集合类型。 为此,可以单击“完全爬网设置”中的“编辑数据类型”链接,选择相应的列作为 StringCollection,并指定分隔符拆分字符串。

对于当前不直接支持的任何其他数据类型,需要将列显式强制转换为受支持的数据类型。

c. 需要水印 ()

[单击展开]在完全爬网查询中指定水印列

为了防止数据库过载,连接器使用完全爬网水印列对完全爬网查询进行批处理并恢复。 使用水印列的值,提取每个后续批,并从最后一个检查点恢复查询。 实质上,此机制控制完全爬网的数据刷新。

为水印创建查询代码段,如以下示例所示:

  • WHERE (CreatedDateTime > @watermark). 引用带有保留关键字 (keyword) @watermark的水印列名称。 如果水印列的排序顺序为升序,请使用 >;否则使用 <
  • ORDER BY CreatedDateTime ASC. 按水印列按升序或降序排序。

在下图所示的配置中, CreatedDateTime 是所选水印列。 若要提取第一批行,请指定水印列的数据类型。 在这种情况下,数据类型为 DateTime

水印列配置。

第一个查询使用“CreatedDateTime > January 1, 1753 00:00:00” (DateTime 数据类型的最小值) 提取前 N 行数。 提取第一批后,如果行按升序排序,则批中返回的最高值 CreatedDateTime 将保存为检查点。 例如,2019 年 3 月 1 日 03:00:00。 然后在查询中使用“CreatedDateTime > 2019 年 3 月 1 日 03:00:00”提取下一批 N 行。

2. 管理属性

SQL 连接器选取完整爬网 SQL 查询中指定的所有列作为引入的源属性。 在此步骤中,可以定义内容的搜索架构。 这涉及到定义搜索注释,例如搜索、检索、查询和优化所选源属性。 这还包括分配语义标签和别名以增强搜索相关性。 若要了解有关搜索架构的详细信息,请参阅有关 “管理属性”指南的文档。

3. 增量爬网 (可选)

a. 增量同步查询

在此可选步骤中,提供 SQL 查询以运行数据库的增量爬网。 使用此查询,SQL 连接器确定自上次增量爬网以来对数据所做的任何更改。 与完全爬网一样,选择要在其中选择“ 查询”、“ 搜索”、“ 检索” 或“ 优化”选项的所有列。 指定在完整爬网查询中指定的同一组 ACL 列。

下图中的组件类似于完整爬网组件,但有一个例外。 在这种情况下,“ModifiedDateTime”是所选水印列。 查看完整的爬网步骤,了解如何编写增量爬网查询,并参阅下图作为示例。

显示 OrderTable、AclTable 和可使用的示例属性的增量爬网脚本。

b. 软删除说明 (可选)

在 SQL 记录系统中,软删除是一种技术,即通过设置特定标志或列将其标记为“已删除”,而不是以物理方式从数据库中删除记录。 这允许记录保留在数据库中,但从逻辑上讲,它被排除在大多数操作之外。 若要在增量爬网期间删除数据库中的软删除行,请指定软删除列名和值,该值指示删除行。

软删除设置:“软删除列”和“软删除列的值,指示已删除的行。

用户

可以选择使用 “仅有权访问此数据源的人员 ”来限制对完全爬网查询中选择的用户或组的访问,也可以替代他们以使内容对 所有人可见。

1. 包含访问权限信息的映射列

选择各种访问控制 (ACL) 指定访问控制机制的列。 选择在完全爬网 SQL 查询中指定的列名称。 请注意,“拒绝”优先于“允许”权限。

每个 ACL 列应为多值列。 这些多个 ID 值可以通过分隔符分隔,例如分号 (;) 、逗号 (、) 等。 需要在值分隔符字段中指定此 分隔符

支持将以下 ID 类型用作 ACL:

  • 用户主体名称 (UPN) :UPN) (用户主体名称是采用电子邮件地址格式的系统用户的名称。 例如,UPN (: john.doe@domain.com) 由用户名 (登录名) 、@ 符号 (分隔符) 以及域名 (UPN 后缀) 组成。
  • Microsoft Entra ID:在 Microsoft Entra ID,每个用户或组都有一个对象 ID,该 ID 类似于“e0d3ad3d-0000-1111-2222-3c5f5c52ab9b”。
  • Active Directory (AD) 安全 ID:在本地 AD 设置中,每个用户和组都有一个不可变的唯一安全标识符,该标识符类似于“S-1-5-21-3878594291-2115959936-132693609-65242”。

用于配置访问控制列表的搜索权限设置。

同步

刷新间隔确定数据在数据源和 Graph 连接器索引之间同步的频率。

可以根据此处提供的计划选项配置完整爬网和增量爬网。 默认情况下,增量爬网 ((如果配置) 设置为每 15 分钟一次,并且每天设置完全爬网)。 如果需要,可以调整这些计划以满足数据刷新需求。

此时,已准备好为 Azure SQL 或 MS SQL 创建连接。 可以单击“创建”按钮发布连接,并为数据库中的数据编制索引。

疑难解答

发布连接后,可以在管理中心的“数据源”选项卡下查看状态。 若要了解如何进行更新和删除,请参阅 管理连接器。 可 在此处找到常见问题的故障排除步骤。

如果遇到问题或想要提供反馈,请联系 Microsoft Graph |支持