2016-03-30 24 views
0

.NET bağlantı dizelerini kullanarak SQL Anywhere 12 veritabanına bağlantı kurmak için gerçekten zor bir zaman geçiriyorum..NET bağlantı dizesi ile uzak bir SQL Anywhere 12 veritabanına bağlanma

aşağıdaki sorgu dizesi kullanıyorum:

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

I (xxx.xxx.xxx.xxx = uzak sunucu ve yyyy IP adresi gerekli liman olduğu) Ben aşağıdaki hatayı alıyorum bu çalıştırdığınızda, Ancak

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); 
    } 
} 

: bağlantımı sınamak için aşağıdaki kodla bu çalıştırmak çalışıyorum'

ERROR: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

cevap

1

Kodunuz SQLAnywhere 12 sunucusuna değil, Microsoft SQL sunucusuna bağlanmaya çalışıyor gibi görünüyor. SqlConnection, SqlCommand, vb sadece Microsoft SQL Server içindir. SQLAnywhere 12 için .NET istemci nesneleri SAConnection, SACommand, vb.

Uygun SQLAnywhere .NET istemci dosyalarının kurulu olduğundan emin olmanız gerekir. Emin değilseniz veya emin değilseniz SQL Anywhere Developer Edition'ı indirin. Ücretsiz. İstemci sürümleri 12-17, sürüm 12 sunucunuza bağlanacaktır. SQLAnywhere için bağlantı dizesinin bir MS SQL Server'a bağlantı dizgisinden çok farklı olduğunu unutmayın.