我需要基于 Windows Server 2016 和 MS SQL Server 2016 配置 RDS Farm High Availability。其中一个步骤是连接到数据库。所有可用的指南都告诉我使用 SQL Server Native 客户端 (SQLNCLI)。但它仍然被弃用,不建议在生产中使用。
https://docs.microsoft.com/en-us/sql/relational-databases/native-client/sql-server-native-client?。
他们告诉开始使用 Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)。
但是没有关于如何使用 Microsoft OLE DB Driver for SQL Server 编写连接字符串的指南。微软似乎已经停止编写有关本地环境的指南了。现在他们只涉及 Azure。
这是 SQL Native Client 的连接字符串:
DRIVER=SQL Server Native Client 10.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>
如何正确编写适用于 2016 SQL Server 的 Microsoft OLE DB Driver 的连接字符串?
关于使用和配置带有 RDS 高可用性场的 SQL Server 的 Microsoft OLE DB 驱动程序,我还应该知道其他一些什么吗?
答案1
我也花了 1 天时间寻找它。我的问题是我在连接字符串中使用了一个命名实例。代理没有接受它。使用本机客户端,这不是问题。
我们填写了 sql 端口而不是 server\instance,这样就成功了。
您可以通过以下方式找到驱动程序版本:odbcad32 -> 文件 DSN -> 添加 -> 选择驱动程序 -> 高级
使用的连接字符串:
DRIVER={ODBC Driver 17 for SQL Server};Server=tcp:<sql server>,<server port>;Database=<Database>;APP=<APP Name>;Trusted_Connection=yes;
答案2
我最终得到了这个对我有用的字符串:
DRIVER={ODBC Driver 13 for SQL Server};SERVER=tcp:RDSServer.best-company.local,1433;DATABASE=RDDB;APP=Remote Desktop Services Connection Broker;Trusted_Connection=Yes;
创建数据库后,您必须在 SQL Management Studio 中将 dbowner 权限分配给 RDS 服务器组。该操作不会自动完成。
ODBC 驱动程序版本,正如 RuLe 所悲哀的,您可以从 C:\Windows\System32\odbcad32 中获取对于 SQL Server 2016,它是 13 版本。
需要注意的是
Trusted_Connection=Yes;
只能这样写。如果你写YES
,而不是Yes
- 数据库配置失败,TerminalServices-SessionBroker 事件日志中出现不太详细的错误
The object is already in the list.
我还注意到,在几次(我想是 5 次)配置数据库的尝试失败后,您将完全被 TerminalServices-SessionBroker 事件日志中的错误所锁定
Account locked due to RDDB bad passwords
我找不到这个被锁定的帐户在哪里以及如何解锁它。大约一天后,它会自动解锁,您可以重试。
数据库文件夹的路径确实是可选的,您可以将其留空。