使用.NET连接字符串连接到远程SQL Anywhere 12数据库

时间:2016-03-30 09:20:31

标签: c# .net database-connection connection-string sqlanywhere

我很难使用.NET连接字符串连接到SQL Anywhere 12数据库。

我使用以下查询字符串:

Data Source=xxx.xxx.xxx.xxx,yyyy; Initial Catalog={MyDatabaseName}; User ID={MyUsername}; Password={MyPassword}

(其中xxx.xxx.xxx.xxx =远程服务器的IP地址,yyyy是必需的端口)

我尝试使用以下代码运行此操作来测试我的连接:

private const string connectionString = "{MyQueryString}";
private const string testQuery = "{ATestSelectQuery}";


using (SqlConnection conn = new SqlConnection(connectionString))
{
    ExecuteNonQuery(conn, testQuery);
}


static void ExecuteNonQuery(SqlConnection conn, string query)
{
    try
    {
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.CommandText = query;
            cmd.CommandType = CommandType.Text;
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("ERROR: {0}", ex.Message);
    }
}

但是,当我运行此操作时,我收到以下错误:

  

错误:已成功与服务器建立连接,但是   然后在登录前握手期间发生错误。 (提供者:TCP   提供者,错误:0 - 现有连接被强制关闭   远程主机。)

1 个答案:

答案 0 :(得分:1)

您的代码看起来像是在尝试连接到Microsoft SQL Server而不是SQLAnywhere 12服务器。 SqlConnection,SqlCommand等仅适用于Microsoft SQL Server。 SQLAnywhere 12的.NET客户端对象是SAConnection,SACommand等。

您需要确保安装了正确的SQLAnywhere .NET客户端文件。如果您不确定或不确定,请下载SQL Anywhere Developer Edition。这是免费的。客户端版本12-17将连接到您的版本12服务器。请注意,SQLAnywhere的连接字符串与MS SQL Server的连接字符串非常不同。