使用Microsoft的 Spark ODBC 驱动程序连接时获取身份验证错误



我们有一个C#控制台应用程序,它可以连接到基于Apache Cassandra的系统,从中获取某些数据。偶尔(可能每天1-5次(,我们会看到以下错误发生:

An error occurred getting Data. System.Data.Odbc.OdbcException (0x80131937): 
ERROR [28000] [Microsoft][ThriftExtension] (2) Error occured during authentication. 
ERROR [28000] [Microsoft][ThriftExtension] (2) Error occured during authentication. 
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) 
at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, 
OdbcConnectionString connectionOptions) 
at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, 
DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, 
DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) 
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection
(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, 
DbConnectionInternal oldConnection, DbConnectionInternal& connection) 
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, 
DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection
(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
at System.Data.Odbc.OdbcConnection.Open() 
at MyProject.Models.DataCollector.ConnectToDB() 
at MyProject.Models.DataCollector.CollectData()

我们有三个环境可以检索这些数据(dev、test和prod(。当错误发生时,最常见的情况是发生在所有3种环境中。这给我的印象是,我们可能会遇到某种连接限制。该系统的供应商建议我们为此使用Microsoft的Spark ODBC驱动程序。以下是Cassandra DB的连接字符串:

@"Driver=Microsoft Spark ODBC Driver;Host=mydb.myorg.com;Port=[portnum];Schema=prodDB;UID=MYUSER;PWD=**********;AuthMech=3;ThriftTransport=1;SSL=1;TwoWaySSL=0;UseSystemTrustStore=0;SparkServerType=3;AllowSelfSignedServerCert=1;CAIssuedCertNamesMismatch=1;TrustedCerts=C:mypathmycert.pem;"

这个连接字符串中是否有我们应该尝试调整的设置,或者是否有我们需要在Cassandra实例中验证的设置?如果没有,这些身份验证错误的原因是什么?

我不熟悉微软的ODBC驱动程序,但它看起来使用的是传统的Thrift协议。

大约8年前,Thrift在Cassandra被弃用,直到2011年才被CQL取代(Cassandra-1703(。基于Thrift API的驱动程序已退休,包括2015年Nate McCall的Hector和2016年Netflix的Astyanax。

Cassandra 2.2在2015年停止使用Thrift(Cassandra-8358、Cassandra-9319(,Cassandra 4.0在2016年完全删除了Thrift。

你很难找到社区的帮助,因为Thrift已经多年没有得到支持了。您最好直接联系Microsoft以获得对其驱动程序的支持。干杯

最新更新