2013-04-25 157 views
0

我剛剛開始玩弄C#上的SQL,並試圖連接到遠程SQL服務器。我已將我的IP添加到具有遠程訪問權限的主機列表中。System.InvalidOperationException:內部連接致命錯誤。當打開sql連接

我的代碼不斷地產生這樣的錯誤:

System.InvalidOperationException: Internal Connection Fatal Error.
at System.Data.SqlClient.TdsParserStateObject.TryPocessHeader<>
at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer<>
at System.Data.SqlClient.TdsParserStateObject.TryReadByteArray<.Byte[] buff, Int32 offset, Int32 len, Int32& totalRead>

跟蹤實際上比較長,但這些是前幾行。

這是造成錯誤(我的實際連接字符串的正確的用戶名,密碼和數據庫名稱)的代碼:

connectionString = "Data Source=173.254.28.27,3306;Network Library=DBMSSOCN;Initial Catalog=myDatabase;User Id=myUserName;Password=myPassword;"; 
using (SqlConnection myConnection = new SqlConnection(connectionString)) 
{ 
    try { myConnection.Open(); } 
    catch (Exception e) { Console.WriteLine(e.ToString()); } 
} 

任何幫助將不勝感激。

謝謝!

回答

1

EDITED

如果你正在使用MySQL Server那麼你的連接字符串是錯誤的!

試試這個的connectionString:

_connectionStr = new MySqlConnectionStringBuilder 
      { 
       Server = "173.254.28.27", 
       Database = myDatabase, 
       UserID = myUserName, 
       Password = myPassword, 
       ConnectionTimeout=60, 
       Port = 3306, 
       AllowZeroDateTime = true 
      }; 
      _con = new MySqlConnection(_connectionStr.ConnectionString); 

      try 
      { 
       _con.Open(); 
      } 
      catch 
      { 
       Console.WriteLine("Error, help i can't get connected!"); 
      } 

如果您正在使用SQLServer試圖通過連接字符串禁用連接池!

加入:

Pooling=false

祝你好運!

+0

感謝您的答覆!我做了,並得到一個錯誤,說** System.ArgumentException:關鍵字不支持:'pool'。** – Sadiq 2013-04-25 11:34:26

+0

我編輯了我的答案,不客氣! – Obama 2013-04-25 11:37:19

+0

謝謝。這修復了System.ArgumentException,但我仍然得到最初的錯誤。 :( – Sadiq 2013-04-25 11:41:48

0

創建一個udl文件,如果它連接,那麼問題是代碼/應用程序,如果它沒有連接,那麼它是你的防火牆,連接字符串,dll庫等等。這裏重要的事情可能是連接字符串。執行以下操作:創建一個空文本文件並將其重命名爲「myconnection.udl」。現在雙擊該文件,它將啓動一個小程序。您可以配置與數據庫的連接並對其進行測試。 (它會拿起註冊的連接庫等)。如果它確定,然後打開記事本中的udl文件,您將看到正確的連接字符串。粘貼到您的應用連接設置。 UDL文件通常會被誤解。它們只是一個保存連接設置的文本文件。然後他們調用連接DLL。如果udl文件有效,那麼你有一個正確的連接字符串100%