设想
您希望使用(至少)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 上收到以下错误消息:
或 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 : NotSpecified: (:) [Write-Error], RDManagementException + FullyQualifiedErrorId : SetRdmsHighAvailability,Microsoft.PowerShell.Commands.WriteErrorCommand + PSComputerName:本地主机
诊断
你真的很确定一切都很好。您可以使用 PowerShell SQL 工具和正确的驱动程序以SYSTEM
用户身份启动 PowerShell,并根据自己的喜好创建数据库。psexec -is powershell
没有什么是错的。
不过,有一点很奇怪。您使用 GUI 向导或 PowerShell 命令检查您的防火墙,您绝对没有看到任何 SQL 服务器连接尝试。
怎么了?
尽管微软在 UI 或 PowerShell 命令中声称...
...数据库路径不是可选的!
是的。添加数据库路径后,一切都开始工作了!
神奇的是,如果您只指定数据库路径,例如:
如果您的日志具有不同的默认路径,则将正确创建新创建的数据库:
这个话题可能有点老了,但我们最近才升级到 2016 RD Server Farm,我在谷歌搜索时发现的所有其他东西都不起作用,你的回答终于让我找到了解决方案。因此,如果有人仍计划进行升级,我想我会分享一些额外的信息。
我想补充一点,当我尝试使用与默认数据库根目录路径不同的路径时,它也不起作用。您可以在 MS SQL Server Management Studio 的服务器选项中获取您的路径。
在该文件夹中有一个名为 MSSQLSERVER 的具有完全权限的服务帐户用户,代理似乎使用它来创建数据库。在服务器上的每个其他文件夹中,它都显示了与上面发布的相同的错误。
附加信息:当您想向 HA 代理添加第二台服务器时,您需要首先将 RDS 代理安全组映射为新创建的数据库上的 dbowner。这不是自动完成的。