Azure DevOps 托管代理:“SQLNCLI11.1”提供程序未在本地计算机上注册错误

问题描述 投票:0回答:2

我们最近使用代理配置“vs2017-win2016”在 Azure DevOps 中运行自动化测试。但是,由于该配置已被弃用,我们最近不得不升级到“windows-latest”配置,并且在尝试连接到 SQL 数据库以拉回数据时突然开始收到错误

'The 'SQLNCLI11.1' provider is not registered on the local machine' 

我做了一些谷歌搜索,听起来这些代理缺少 Microsoft Access 数据库引擎,这就是它失败的原因。有没有人找到解决方法?使用自托管代理并不是真正的选择,因为我们需要资源来设置它们,但我们无法使用这些资源,而且我们也没有预算。任何帮助将不胜感激!

我用来连接的连接字符串是:

"Server=tcp:" + server + ",1433;Initial Catalog = " + initialCatalog + ";Persist Security Info=False;User ID = " + username + ";Password=" + password + ";MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Provider=SQLNCLI11.1"

其中“server”、“initialCatalog”、“username”和“password”是我们传入的参数。

sql azure-devops azure-devops-hosted-agent
2个回答
4
投票

看起来 SQLNCLI 已被弃用,您应该使用 MSOLEDB

https://learn.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-ver15

我想它已从构建代理中删除以鼓励迁移

这是一些示例连接字符串

https://www.connectionstrings.com/ole-db-driver-for-sql-server/

此连接字符串是否有效:

"Provider=MSOLEDBSQL;Server=tcp:" + server + ",1433;Database = " + initialCatalog + ";UID = " + username + ";PWD=" + password + ";"

这里有更多示例 sqloledb 连接字符串

https://www.connectionstrings.com/microsoft-ole-db-provider-for-sql-server-sqloledb/


0
投票

我今天遇到了这个问题。我们现有的测试代理使用 SQLNCLI。自几年前配置以来,这些功能正常运行,没有任何问题。

我们想向代理池中添加更多代理,当我们尝试在这些代理上执行管道执行时,我们收到此错误:

“SQLNCLI11”提供程序未在本地计算机上注册

原因是 SQLNCLI 已被弃用。

我们从这里下载了SQL Server 2012 Native Client: https://www.microsoft.com/en-us/download/details.aspx?id=50402

这解决了我们的问题,无需对我们的代码或 PowerShell 脚本进行任何其他更改。

另一种选择是选择已接受的答案。

© www.soinside.com 2019 - 2024. All rights reserved.