Embarcadero / IB.NETDataProvider

InterBase database .NET Data Provider
Other
12 stars 7 forks source link

Connection Issue in Windows server 2019 Std #10

Closed tramesh2009 closed 2 years ago

tramesh2009 commented 2 years ago

Hi,

We could not connect the interbase DB using this driver. The following errors comes

  1. Error : An invalid connection string argument has been supplied or a required connection string argument has not been supplied. Trace : at InterBaseSql.Data.Common.ConnectionString.Validate() at InterBaseSql.Data.InterBaseClient.IBConnection.set_ConnectionString(String value) at InterBaseSql.Data.InterBaseClient.IBConnection..ctor(String connectionString)

  2. Error : Index was outside the bounds of the array. Trace : at InterBaseSql.Data.Common.IscHelper.VaxInteger(Byte[] buffer, Int32 index, Int32 length) at InterBaseSql.Data.Common.IscHelper.ParseDatabaseInfo(Byte[] buffer) at InterBaseSql.Data.Client.Native.IBDatabase.GetDatabaseInfo(Byte[] items, Int32 bufferLength) at InterBaseSql.Data.Client.Native.IBDatabase.GetServerVersion() at InterBaseSql.Data.Client.Native.IBDatabase.Attach(DatabaseParameterBuffer dpb, String database) at InterBaseSql.Data.InterBaseClient.IBConnectionInternal.Connect() at InterBaseSql.Data.InterBaseClient.IBConnectionPoolManager.Pool.GetConnection(IBConnection owner) at InterBaseSql.Data.InterBaseClient.IBConnectionPoolManager.Get(ConnectionString connectionString, IBConnection owner) at InterBaseSql.Data.InterBaseClient.IBConnection.Open()

Used the below connection string format <add name="Conn" connectionString="server=localhost/3050:<DB PATH>;user=TEXDBA;password=texdba;port=3050;charset=None;" />

Please suggest how to solve this issue or do we need to install any dependencies.

Thank You

jeffovercash commented 2 years ago

The InterBase client is installed is the only extra dependency.

The Fb code only parses the server/port:path form into its parts if it is passed as part of the database, not the server in the connection string. So try either breaking it into its constituent parts like

"server=localhost;database=DB PATH;user=TEXDBA;password=texdba;port=3050;charset=None;"

or pass the server/db info through the database part

"database=localhost/3050:DB PATH;user=TEXDBA;password=texdba;port=3050;charset=None;"

I've added in the next update that if the database is blank but the server is not to parse the server as if it were passed in the database part. For now, you can't send everything through the server part like you are trying to.