System.InvalidOperationException:内部连接致命错误。当打开SQL连接时

时间:2013-04-25 11:25:53

标签: c# sql fatal-error

我刚刚开始在C#上使用SQL,我正在尝试连接到远程SQL服务器。我已将我的IP添加到具有远程访问权限的主机列表中。

我的代码不断产生此错误:

  

System.InvalidOperationException:内部连接致命错误。
  在System.Data.SqlClient.TdsParserStateObject.TryPocessHeader<>
  在System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer<>
  在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()); }
}

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

<强> 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

祝你好运!

答案 1 :(得分:0)

创建一个udl文件,如果它连接则问题是代码/应用程序,如果它没有连接,那么它就是你的防火墙,连接字符串,dll库等。这里重要的是连接字符串。执行以下操作:创建一个空文本文件并将其重命名为“myconnection.udl”。现在双击该文件,它将启动一个小程序。您可以配置与数据库的连接并对其进行测试。 (它将获取已注册的连接库等)。如果它给OK,然后在记事本中打开udl文件,您将看到正确的连接字符串。粘贴到您的应用连接设置。 UDL文件通常被误解。它们只是一个包含连接设置的文本文件。然后他们调用连接dll。如果udl文件有效,那么你有一个正确的连接字符串100%