设想

设想

设想

您想要在高可用性模式下配置远程桌面服务连接代理,使用(至少)Windows Server 2016。

您已完成并验证所有先决条件:

  • 数据库可通过网络访问(所有防火墙和路由均正常),
  • 数据库权限正常(db_creator对于包含所有目标 RDS CB 主机的组),
  • SQL 驱动程序已安装并且连接字符串正确。

您可以通过向导开始配置高可用性:

在此处输入图片描述

或通过 Powershell:

Set-RDConnectionBrokerHighAvailability `
    -ClientAccessName "rds.contoso.com" `
    -DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=db.contoso.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=rdscbha"

你省略了“存储数据库的文件夹”,或者-DatabaseFilePath因为,嗯,它是选修的并且您的 MSSQL 已经配置好了默认存储新数据库的位置。

问题

您会在 GUI 上收到以下错误消息:

数据库连接字符串中指定的数据库在 RD 连接代理服务器上不可用。请确保 SQL Server 在网络上可用、SQL Server Native Client 已安装在 RD 连接代理服务器上,并且 RD 连接代理具有对数据库的写入权限。

或在 PowerShell 上出现以下错误:

连接字符串 DRIVER=SQL Server Native Client 11.0;SERVER=db.contoso.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=master 中指定的数据库在 RD 连接代理服务器 RDS-01.CONTOSO.COM 中不可用。请确保数据库服务器在网络上可用,SQL Server Native Client 安装在所有 RD 连接代理服务器上,并且 RD 连接代理服务器的计算机帐户是数据库服务器上 RDS 管理服务器组的成员。
    + CategoryInfo:未指定:(:)[写入错误],RDManagementException
    + 完全合格的错误标识:SetRdmsHighAvailability,Microsoft.PowerShell.Commands.WriteErrorCommand
    + PS计算机名称:本地主机

诊断

你确实确定一切没问题。您可以以SYSTEM用户身份启动 PowerShell psexec -is powershell,然后使用 PowerShell SQL 工具和正确的驱动程序根据自己的喜好创建数据库。

没有什么是错的。

不过,有一件事很奇怪。你使用 GUI 向导或 PowerShell 命令检查防火墙,然后你看到绝对没有 SQL 服务器连接尝试

怎么了?

答案1

尽管微软在 UI 或 PowerShell 命令中声称……

...数据库路径不是可选的!

是的。一旦您添加了数据库路径,一切就开始正常工作了!

神奇的是,如果您只指定数据库路径,例如:

C:\ClusterStorage\SQL Data\MSSQL13.MSSQLSERVER\MSSQL\DATA

如果你的日志有不同的默认路径,则将创建新的数据库正确地

C:\ClusterStorage\SQL Log\MSSQL13.MSSQLSERVER\MSSQL\DATA

答案2

这个话题可能有点老了,但我们最近才升级到 2016 RD Server Farm,而且我在谷歌上找到的所有其他东西都不起作用,你的回答终于让我找到了解决方案。所以如果有人仍打算升级,我想我会分享一些额外的信息。

我想补充一点,当我尝试使用与默认数据库根目录路径不同的路径时,它也不起作用。您可以在 MS SQL Server Management Studio 中的服务器选项中获取您的路径。

在该文件夹中,有一个名为 MSSQLSERVER 且拥有完全权限的服务帐户用户,代理似乎使用该用户来创建数据库。在服务器上的其他每个文件夹中,都显示与上述相同的错误。

附加信息:当您想要向 HA Broker 添加第二台服务器时,您需要首先将 RDS Broker 安全组映射为新创建的数据库上的 dbowner。这不是自动完成的。

答案3

尝试像这样添加。它应该有效。

DRIVER=SQL Server Native Client 11.0;SERVER=db.contoso.com,1434;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;Database=RDSDB

答案4

问题在于 MS SQL 实例中的权限。您应该进入 SQL → 安全 → 登录 → RemoteAppBrokersGroup → 属性 → 安全对象 → 创建任何数据库(您没有得到分配 dbcreate 权限时自动选中此复选框)

相关内容