我刚刚开始在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()); }
}
非常感谢任何帮助。
谢谢!
答案 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%