on 2011 Oct 02 12:50 PM
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)
Request clarification before answering.
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?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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"
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)"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes, I am using .net. Any chance you can provide the connection string using DbConnection?
Thanks,
Todd
User | Count |
---|---|
62 | |
7 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.