cancel
Showing results for 
Search instead for 
Did you mean: 

SQL Anywhere Help - Connection String Error?

Former Member
0 Kudos
8,944

I'm trying to connect to an SQL Anywhere database on the network.

Any help is appreciated.

Thanks

Here is the connections string:

MICROS&Provider=SAOLEDB.11;UID=custom;PWD=custom;ENG=sqlmicros1;CON=SQL_DBC_190f07d8;LINKS='TCPIP(IP=10.4.0.40;PORT=2638)'

Here is the error I'm getting.

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Data.OleDb.OleDbException (0x80040E4D): Connection error: Found server but communication error occurred
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)

Accepted Solutions (0)

Answers (5)

Answers (5)

jeff_albion
Product and Topic Expert
Product and Topic Expert

Generically, "Connection error: Found server but communication error occurred" means just what the message implies - the connection library was able to find the targeted server name via UDP broadcasting (e.g. "sqlmicros1"), but couldn't make an active TCP connection to it (over "10.4.0.40:2638").

Are you sure that the "sqlmicros1" database server is running on that IP/port? Can you check dblocate 10.4.0.40 to see if it can see this server as well? Can you add the connection option "LOG=c:\\connlog.txt" to the connection string, and review the resulting log to check how the client is attempting to contact this server?

VolkerBarth
Contributor

You should be able to feed the connection string to the SAConnection class (which is a spezialized type of the generic .Net DBConnection class), either as a common connetion string, or with the help of the SAConnectionStringBuilder class.

I haven't used this myself, but the handling seems quite easy...look at that doc page.

VolkerBarth
Contributor
0 Kudos

May this be related to .NET Connection pooling?

Once you have tried to use the native SQL Anywhere data provider (see my other answer), you might try whether the enabling/disabling of connection pooling will have an influence.

Former Member
0 Kudos

Why are you specifying a connection name ("CON=SQL_DBC_190f07d8"), especially one which looks very similar to the names generated automatically?

If a connection with that name already exists, you are creating your own conflict in naming.

Try omitting the CON= parameter and see if your problem goes away with it.

Breck_Carter
Participant

AFAIK there's no rule against duplicate connection names, and SQL Anywhere certainly doesn't check for uniqueness. Maybe some application or other might get confused if it's expecting uniqueness but that would not explain the symptom here... IMO anyway. FWIW I just successfully created 10 dbisql sessions all with CON=SQL_DBC_190f07d8... the title bars all say exactly the same thing "SQL_DBC_190f07d8 - Interactive SQL"

Former Member
0 Kudos

Dang, putting my ignorance out there is getting educational!

I never realized that the connection names aren't unique. That is interesting -- not terribly useful, but definitely interesting in a "I wouldn't do it that way" sense.

Thank you for the correction, Breck.

Former Member
0 Kudos

Try using DbConnection, it's better than OLEDB.

I'm presuming that you are using .net .

EDIT:

sample connectionString="uid=DBA;pwd=sql;ServerName=DemoDB;links=tcpip(host=my.server.name;port=5577)"

Former Member

Yes, I am using .net. Any chance you can provide the connection string using DbConnection?

Thanks,

Todd

Former Member
0 Kudos

see my response again 😛