Мне нужно подключиться к «очень» старому серверу SQL, работающему на V10.50.2550.0 (Win NT 6.1 (7601)) (SQL Server 2008 R2). < /p>
Да I Знайте, что это должно быть обновлено, но для этого банкомата нет никакого способа! Bash PrettyPrint-Override ">
Мне нужно подключиться к «очень» старому серверу SQL, работающему на V10.50.2550.0 (Win NT 6.1 (7601)) (SQL Server 2008 R2). < /p> Да I Знайте, что это должно быть обновлено, но для этого банкомата нет никакого способа! Bash PrettyPrint-Override ">[code]# downgrade TLS for SQL Server 2008 to connect (pre SP3) RUN sed -i '/\[openssl_init\]/a ssl_conf = ssl_configuration' /etc/ssl/openssl.cnf && \ echo "\n[ssl_configuration]" >> /etc/ssl/openssl.cnf && \ echo "system_default = tls_system_default" >> /etc/ssl/openssl.cnf && \ echo "\n[tls_system_default]" >> /etc/ssl/openssl.cnf && \ echo "MinProtocol = TLSv1" >> /etc/ssl/openssl.cnf && \ echo "CipherString = DEFAULT@SECLEVEL=0" >> /etc/ssl/openssl.cnf # downgrade fertig. < /code> Как это тестировать: < /p> using Microsoft.Data.SqlClient;
private static void DBTestManuel(DatenbankTest dbTest) { Console.WriteLine("ManuellerTestStart"); List Items = new List();
try { using (SqlConnection conn = new SqlConnection(dbTest.ConString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("Aufträge_GetByKundenNr", conn)) { cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@KundenNr", 11117);
using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { Items.Add(GetRowFromReader(reader)); } } }
Console.WriteLine("ManuellerTestEnde"); } < /code> Строка подключения (домен и пароль заменены): < /p> public string ConString = @"Data Source=mydomain;Initial Catalog=Archiv;User ID=msAuftragImport;Password=mypassword;TrustServerCertificate=True;Encrypt=false"; < /code> on connection.open < /code> i получаю следующее исключение: < /p>
microsoft.data.sqlclient.sqlexception ( 0x80131904): истек срок службы подключения. Период времени ожидания, прошедший во время фазы после логина. Подключение могло бы время, ожидая, когда сервер завершит процесс входа в систему и ответил; Или это могло бы время, пытаясь создать несколько активных соединений. Продолжительность, потраченная при попытке подключиться к этому серверу, была - [Pre -Login] инициализация = 143; Рука = 359; [Войдите] инициализация = 1; Аутентификация = 18; [Post-login] elepple = 14609; < /p> system.componentmodel.win32exception (258): неизвестная ошибка 258 < /p> at microsoft.data.sqlclient. Sqlinternalconnection.onerror (исключение SQLexception, Boolean Breakconnection, действие1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParserStateObject.ThrowExceptionAndWarning(Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) at Microsoft.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() at Microsoft.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() at Microsoft.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() at Microsoft.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool) at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource< /code> 1 повторение, dbconnectionoptions Userptions, dbconnectionInternal & Connection) at microsoft.data.providerbase.dbconnectionFactory.trightConnection (dbconnection helowingConnection, taskCompletionsource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource< /code> 1 повторение, dbconnectionoptions userptions) at microsoft.data.providerbase.dbconnectionClosed.tryopencenection (Dbconnection Overconnection, dbconnectionFactory Connectory, TaskCompleTionionSource1 retry, DbConnectionOptions userOptions) at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource< /code> 1 повторение, переопределение sqlconnectionoverrides) at microsoft.data.sqlclient.sqlconnection.open (sqlconnectionoverrides) at microsoft.data.sqlclient.sqlconnection.open () at atesspp1 .Program.dbtestmanuel (datenbanktest dbtest) в /src/consoleapp1/program.cs:line 27 < /p> clientConnectionId: 089dfd32-0cce-416d-93a1-9b8d3cd31a3a
Номер ошибки: -2, состояние: 0, класс: 11
, прежде чем я изменил изображение, это была известная ошибка TLS/SSL. Как сказано выше, изменило изображение, чтобы запустить tlsv1 и изменить строку подключения на < /p> TrustServerCertificate=True;Encrypt=false [/code] Я понимаю, что это должно игнорировать любой SSL/TLS?