在远程 SQL 服务器实例中找到多个有效的 AD FS 配置数据库

Multiple valid AD FS configuration databases found in remote SQL Server instance

我们正在尝试将新配置的 AD FS 节点加入现有场。我们已经测试并确认防火墙 > 用户访问正常。当尝试通过向导加入时,我们成功指定了现有的场服务器、证书(已导入并显示在下拉列表中)和服务帐户。它因错误而失败:

Multiple valid AD FS configuration databases found in remote SQL Server instance with connection string 'Data Source=REDACTED;Initial Catalog=ADFSConfigurationV3;Integrated Security=True;Min Pool Size=20'. Provide a specific database version when joining the machine.

我们尝试使用向导通过管理员 powershell 创建的脚本,并显示相同的消息。我查看了 SQLConnectionString 参数,但看不到任何可以指定 https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=netframework-4.8#remarks

版本的参数

在 SQL 服务器端,确实有一个名为 AdfsConfiguration 的旧数据库,自 2020 年 9 月 6 日以来未通过检查 tables > IdentityServerPolicy.FarmNodes > 对单击 > select 前 1000 行并查看 Heartbeat 属性 值。在相同 table 和对象下的较新的 AdfsConfigurationV3 数据库上,我看到已修改 2022-03-30(今天)。

我将如何找到多个配置数据库并准确指定要使用的数据库?分离 AdfsConfiguration 数据库是否安全,或者这是否仍然 used/in ADFS 使用,即使后来的 2016 V3 存在于单独的数据库中?

• 正如您所说,要在场中添加的 ADFS 服务器是 运行 on Windows Server 2016,FBL(场行为级别)版本是 3 和相应的 ADFS 配置数据库名称将为“AdfsConfigurationV3”。因此,在指定配置数据库时要搜索的实际数据库应该是“AdfsConfigurationV3”。

• 如果ADFS节点服务器的OS版本为'Windows Server 2012 R2',则FBL将是 '1' 并且 ADFS 配置数据库名称将是 'AdfsConfiguration' 而 OS 版本,如果它是 'Windows Server 2019',则 FBL 将为“4”,ADFS 配置数据库名称将为 'AdfsConfigurationV4' .此外,您应该检查 'AdfsConfigurationV3.mdf'、'AdfsConfigurationV3_log.ldf'、'AdfsArtifactStore.mdf' 和 'AdfsArtifactStore.ldf' 其他 ADFS 场连接服务器中的数据库文件,并相应地尝试形成连接字符串并连接到正确的数据库。

• 通过 SQL 查询从原始 ADFS 服务器分离 ADFS 数据库是安全的,方法是使用下面的查询,然后将它们复制并粘贴到 SQL 数据库所在的位置存储在目标 ADFS 服务器上。

  USE [master]
   GO
   EXEC master.dbo.sp_detach_db @dbname = N'AdfsArtifactStore'
   GO
   EXEC master.dbo.sp_detach_db @dbname = N'AdfsConfigurationV3'
   GO

使用上述查询分离 ADFS 数据库并将其粘贴到目标 ADFS 服务器后,执行以下 SQL 查询以将复制的数据库附加到 ADFS 服务器并使其运行。

 GO
 CREATE DATABASE [AdfsConfigurationV3] ON
 ( FILENAME = N'C:\Program Files\Microsoft SQL 
  Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\AdfsConfigurationV3.mdf' ),
  ( FILENAME = N'C:\Program Files\Microsoft SQL 
   Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\AdfsConfigurationV3_log.ldf' )
    FOR ATTACH
   GO 
   USE [master]
   GO
    CREATE DATABASE [AdfsArtifactStore] ON
      ( FILENAME = N'C:\Program Files\Microsoft SQL 
       Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\AdfsArtifactStore.mdf' ),
     ( FILENAME = N'C:\Program Files\Microsoft SQL 
      Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\AdfsArtifactStore_log.ldf' )
    FOR ATTACH
    GO
     ALTER DATABASE AdfsConfigurationV3 set enable_broker with rollback immediate
     GO

因此,通过这种方式,您可以将最新的 ADFS 数据库分离并附加到首选的主 ADFS 服务器,以供复制和使用。但是为此,请确保您对原始和目标 ADFS 服务器中的 ADFS 数据库分别具有 'OWNER' 权限访问,并在执行上述任务时,确保 ADFS 服务仅在操作完成时停止和启动。 Post 完成上述任务,确保可以连接到 SQL 服务器,参考下面的文档 link: -

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/troubleshooting/ad-fs-tshoot-sql

此外,请参阅下面的link以获取有关上述内容的详细信息:-

https://purple.telstra.com.au/blog/windows-server-2012-r2-adfs-3-0-migrating-adfs-configuration-database-from-wid-to-sql

虽然以上link可能没有讨论到您所面临的问题,但在更大程度上解决了您的疑问。