2016-03-22 119 views
0

該應用程序在我的開發盒上工作正常,但我把它帶到最終用戶的計算機,它給出了這個錯誤。我發佈了它並將其安裝在目標計算機上。CLR20r3 System.Data.SqlClient.Sql C#應用程序

SqlConnection cs = new SqlConnection("SERVER=SERVERWITHDB;DATABASE=DATABASENAME;Trusted_Connection=True"); 

這是設置sql連接的正確方法嗎?

+0

不,請從exe.config文件讀取連接字符串,不要在代碼中對其進行硬編碼。順便說一句,有什麼錯誤? – Steve

回答

0

如果您需要構建連接字符串代碼中(而不是在你的exe.config文件中配置它),你可以使用一個SqlConnectionStringBuilder

SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder 
{ 
    DataSource = "SERVERWITHDB", 
    InitialCatalog = "DATABASENAME", 
    IntegratedSecurity = true 
}; 
SqlConnection cs = new SqlConnection(connectionStringBuilder.ToString()); 

你會看到,在連接字符串你在你的問題中顯示使用錯誤的關鍵詞。爲SqlConnection有效的連接字符串看起來是這樣的:

SqlConnection cs = new SqlConnection("Data Source=SERVERWITHDB;Initial Catalog=DATABASENAME;Integrated Security=True"); 

所以關鍵詞是:

  • Data Source數據庫服務器名稱
  • Initial Catalog數據庫使用
  • Integrated Security設爲用於Windows身份驗證的True以及用於SQL服務器身份驗證的False
  • User ID用戶名(僅適用於SQL Server身份驗證)
  • Password輸入密碼(僅限SQL Server身份驗證)
+0

我仍然得到以下錯誤: 問題事件名稱:CLR20r3 問題簽名01:POC1.exe 問題簽名02:1.0.0.0 問題簽名03:56f1509c 問題簽名04:System.Data 問題簽名05:4.0 .30319.34209 問題簽名06:53489aad 問題簽名07:25bd 問題簽名08:27 問題簽名09:System.Data.SqlClient.Sql –

+0

那麼這個錯誤消息不會告訴我很多。我不認爲這是來自您的連接字符串。我建議爲你的代碼添加一些更多的錯誤處理(例如db操作周圍的'try/catch'塊)並記錄異常(包括堆棧跟蹤!)。然後用必要的信息更新你的問題,或者問一個新的問題,如果這是一個完全不同的錯誤。 –

0

你需要檢查網絡用戶有權訪問SQL服務器(你的集成安全是設置爲true)。