SQL 连接字符串提供商名称

SQL Connection string Provider name

这更像是一个一般性问题,我正在构建一个报告生成器:

public ReportGenerator(IReportGeneratorConfig config)
{
    Configuration = config;
    ImagePaths = new Dictionary<string, string>();
    ReportErrors = new StringBuilder();

    DatabaseForReportQueries = DatabaseFactory.CreateDatabase(Configuration.DatabaseName);

    using (System.Data.Common.DbConnection conn = DatabaseForReportQueries.CreateConnection())
    {
        //get the connection string for use with the report directly.
        ReportConnectionString = conn.ConnectionString + "Provider=SQLOLEDB;";
        conn.Close();
    }
}

这是我在尝试 运行 报告生成按钮时收到的错误消息

Cannot open data source, please check ConnectionString and RecordSource properties. 
ConnectionString:   Database=Test80;Server=SQL01;uid=mcadmin;pwd=password;Provider=SQLOLEDB; 
RecordSource: 

除了我在代码中发送的提供商之外,所有信息都完好无损。我不知道如何在网络应用程序中找到提供商名称。这与 connectionStrings.config 中的 providerName 标签不同。需要 Provider=something;

连接字符串有一个providerName = System.Data.SqlClient

提供商名称取决于您使用的 SQL 服务器本机客户端版本。您可以尝试 Provider=SQLNCLI11。有关 sql 服务器的可能连接字符串设置列表,您可以查看 ConnectionStrings.com

如果您使用 SQL 服务器 (System.Data.SqlClient) 的 .NET 提供程序,则无需在连接字符串中指定提供程序名称。

.NET 提供程序的提供程序名称是基于实现的隐式 class,不需要在连接字符串中指定。

不要使用基于 COM 的 OLE DB 提供程序(SQLNCLI 或 SQLOLEDB)或 ODBC 驱动程序从 .NET 应用程序访问 SQL 服务器数据,因为这会导致与 SqlClient 相比的性能损失。

等效的 SqlClient 连接字符串是:

Data Source=SQL01;Initial Catalog=Test80;User Id=mcadmin;Password=password;