何时在连接字符串中指定 providerName="System.Data.SqlClient"

Posted

技术标签:

【中文标题】何时在连接字符串中指定 providerName="System.Data.SqlClient"【英文标题】:when to specify providerName="System.Data.SqlClient" in a connection string 【发布时间】:2011-07-30 17:51:09 【问题描述】:

我遇到了在NT AUTHORITY\LOCAL SYSTEM 下运行的 Windows 服务的问题,该服务无法连接到数据库。

Login failed for user 'NT AUTHORITY\LOCAL SERVICE'. Reason: Failed to open the explicitly specified database.

为此特定服务指定的连接字符串与在同一帐户下运行的另一个服务之间的唯一区别是缺少providerName 属性。一旦我添加了

providerName="System.Data.SqlClient"

服务可以访问数据库的连接字符串。谁能解释为什么会这样?我认为 System.Data.SqlClient 是默认提供程序。

【问题讨论】:

你是如何使用这个连接字符串的? SqlConnection、DbContext...? 【参考方案1】:

当您想使用 SQLClient 提供程序来管理连接时。 SQLClient 提供程序管理与 Microsoft SQL Server 的连接。

Here is a code example

您永远必须指定它,因为它也是提供者的default value。

【讨论】:

以上是关于何时在连接字符串中指定 providerName="System.Data.SqlClient"的主要内容,如果未能解决你的问题,请参考以下文章

如何在 API 项目中指定实体框架连接字符串

在 MySQL 连接字符串中指定密码

如何在 NpgSql 连接字符串中指定 ApplicationName

如何在C#中获取连接字符串中指定的Mongo数据库

如何在 ODBC 连接字符串中指定网络目录?

难道不必在连接字符串中指定用户凭据就可以通过 ODBC 对 DBMS 进行身份验证吗?