sql - Azure DevOps 托管代理 : The 'SQLNCLI11.1' provider is not registered on the local machine error

标签 sql azure-devops azure-devops-hosted-agent

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

我进行了一些谷歌搜索,听起来这些代理缺少 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”是我们传入的参数。

最佳答案

看起来 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/

关于sql - Azure DevOps 托管代理 : The 'SQLNCLI11.1' provider is not registered on the local machine error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71684779/

相关文章:

mysql - 自定义 AUTO INCREMENT 值不起作用

MySQL 数据透视表 - 如何将动态列转换为行?

ios - 如何在 xcode build 命令中传递预处理器宏名称?

azure - 有没有办法使用 REST API 获取特定 Azure DevOps 项目中的用户权限?

bash - Azure Devops 使用存储库名称获取 repositoryId

windows - Azure DevOps Windows 与 Ubuntu 跨平台应用程序托管代理?

mysql按字母顺序按列名获取结果

SQL Server 2008 使用联接表中的联接和 Where 子句更新查询

.net - .NET Framework 是否有发布任务? (不是 .NET Core)