Azure SQL 和 Microsoft SQL Server Microsoft Graph 连接器

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

注意

阅读 设置 Microsoft Graph 连接器 一文,了解一般 Graph 连接器设置说明。

本文适用于配置、运行和监视Azure SQL或 Microsoft SQL Server 连接器的任何人。 它补充了常规设置过程,并显示仅适用于 Azure SQL 和 Microsoft SQL Server 连接器的说明。 本文还包括有关这两个连接器 的限制 的信息。

开始之前

安装本地 Microsoft SQL Server 连接器所需的 Microsoft Graph 连接器代理 ()

若要访问本地第三方数据,必须安装和配置连接器代理。 有关详细信息 ,请参阅安装 Microsoft Graph 连接器代理

注意

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

步骤 1:在Microsoft 365 管理中心中添加连接器

按照常规 设置说明进行操作

步骤 2:命名连接

按照常规 设置说明进行操作

步骤 3:配置连接设置

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

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

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

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

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

注意

若要撤销对Microsoft Entra ID 中注册的任何应用的访问权限,请参阅有关删除已注册应用的 Azure 文档。

连接设置

若要将 Microsoft SQL Server 连接器连接到数据源,必须配置要爬网的数据库服务器和本地代理。 然后,可以使用所需的身份验证方法连接到数据库。

注意

  • 数据库必须运行SQL Server版本 2008 或更高版本,才能连接 Microsoft SQL Server 连接器。
  • Azure SQL 连接器仅允许从与 Microsoft 365 相同的租户中的 Azure SQL 实例进行引入。 不支持跨租户数据流。

对于Azure SQL连接器,只需指定要连接到的服务器名称或 IP 地址。 Azure SQL连接器仅支持Microsoft Entra ID OpenID Connect (OIDC) 身份验证来连接到数据库。

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

地区 M365 企业版 M365 政府版
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 不适用

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

步骤 3a:完全爬网 (必需)

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

提示

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

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

选择 (“必需) ”和“ACL”列 (“可选”)

该示例演示了用于保存搜索数据的五个数据列的选择: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 的示例数据。

支持的数据类型

下表汇总了 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,并指定分隔符拆分字符串。

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

需要水印 ()

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

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

  • 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 行。

跳过软删除行 (可选)

若要将数据库中的软删除行从索引中排除,请指定软删除列名和值,该值指示该行已删除。

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

完全爬网:管理搜索权限

选择“ 管理权限 ”以选择各种访问控制 (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”。

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

步骤 3b:增量爬网 (可选)

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

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

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

步骤 4:分配属性标签

按照常规 设置说明进行操作

步骤 5:管理架构

按照常规 设置说明进行操作

步骤 6:管理搜索权限

可以选择使用 在完全爬网屏幕中指定的 ACL ,也可以重写它们以使内容对每个人都可见。

步骤 7:选择刷新设置

按照常规 设置说明进行操作

步骤 8:查看连接

按照常规 设置说明进行操作

故障排除

下面是配置连接器时观察到的常见错误及其可能的原因。

配置步骤 错误消息 () 的可能原因
完全爬网 Error from database server: A transport level error has occurred when receiving results from the server. 此错误是由于网络问题引起的。 建议使用 Microsoft 网络监视器检查网络日志,并联系 Microsoft 客户支持。
完全爬网 Column column_name returned from full crawl SQL query contains non-alphanumeric character SELECT 子句的列名中不允许使用非字母数字字符 (如下划线) 。 使用别名重命名列并删除非字母数字字符 (示例 - SELECT column_name AS columnName) 。

限制

SQL 连接器在预览版中具有以下限制:

  • Microsoft SQL Server 连接器:本地数据库必须运行SQL Server版本 2008 或更高版本。
  • 托管Azure SQL数据库) 的 Microsoft 365 订阅和 Azure 订阅 (必须位于同一Microsoft Entra ID 中。
  • 仅使用用户主体名称 (UPN) 、Microsoft Entra ID 或 Active Directory 安全性来支持 ACL。
  • 不支持为数据库列内的丰富内容编制索引。 此类内容的示例包括 HTML、JSON、XML、Blob 和作为数据库列内的链接存在的文档分析。