2015-05-02 75 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

相關問題