2015-05-02 47 views
4

这更多的是一种通用的问题,我建立一个报告生成:SQL连接字符串提供程序名称

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

回答

3

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

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

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

等效SqlClient连接字符串是:

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

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

相关问题