Стартовая страница › Форумы › Ошибки в работе › Rapid SCADA 6.4.1 + MS SQL Server 2005
- В этой теме 6 ответов, 3 участника, последнее обновление 2 недели, 6 дней назад сделано
Andr.
-
АвторСообщения
-
20.06.2025 в 13:02 #39098
Andr
УчастникДобрый день!
В прошлом году начали осваивать Rapid SCADA. Вроде более-менее всё получается. Но вот дошли до экспорта в стороннюю БД и столкнулись с проблемой, которую пока решить не удалось.
Собственно, как указано в заголовке, пользуемся версией 6.4.1. Требуется экспорт данных в стороннюю БД. Так уж вышло, что это MS SQL Sever 2005. При попытке экспорта выдаёт следующее:———————————————————————————
2025-06-18 13:52:17 Exporter «[1] Цель 1» started
2025-06-18 13:52:17 Error connecting to DB:
System.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 — Encryption(ssl/tls) handshake failed)
—> System.IO.EndOfStreamException: End of stream reached
at System.Data.SqlClient.SNI.SslOverTdsStream.ReadInternal(Byte[] buffer, Int32 offset, Int32 count, CancellationToken token, Boolean async)
at System.Data.SqlClient.SNI.SslOverTdsStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.Stream.Read(Span`1 buffer)
at System.Net.Security.SyncReadWriteAdapter.ReadAsync(Stream stream, Memory`1 buffer, CancellationToken cancellationToken)
at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](CancellationToken cancellationToken, Int32 estimatedSize)
at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder1.StateMachineBox
1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)
at System.Net.Security.SslStream.ReceiveHandshakeFrameAsync[TIOAdapter](CancellationToken cancellationToken)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
at System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)
at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options)
at System.Data.SqlClient.SNI.SNIProxy.EnableSsl(SNIHandle handle, UInt32 options)
at System.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)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
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.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Scada.MultiDb.DataSource.Connect()
at Scada.Server.Modules.ModDbExport.Logic.Exporter.Connect()
ClientConnectionId:422e53c8-6709-40c5-936e-b4a9815ffae3
2025-06-18 13:52:18 Error connecting to DB:
System.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 — Encryption(ssl/tls) handshake failed)
—> System.IO.EndOfStreamException: End of stream reached
at System.Data.SqlClient.SNI.SslOverTdsStream.ReadInternal(Byte[] buffer, Int32 offset, Int32 count, CancellationToken token, Boolean async)
at System.Data.SqlClient.SNI.SslOverTdsStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.Stream.Read(Span`1 buffer)
at System.Net.Security.SyncReadWriteAdapter.ReadAsync(Stream stream, Memory`1 buffer, CancellationToken cancellationToken)
at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](CancellationToken cancellationToken, Int32 estimatedSize)
at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder1.StateMachineBox
1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)
at System.Net.Security.SslStream.ReceiveHandshakeFrameAsync[TIOAdapter](CancellationToken cancellationToken)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
at System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)
at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options)
at System.Data.SqlClient.SNI.SNIProxy.EnableSsl(SNIHandle handle, UInt32 options)
at System.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)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
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.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Scada.MultiDb.DataSource.Connect()
at Scada.Server.Modules.ModDbExport.Logic.Exporter.Connect()
ClientConnectionId:04523a09-c1a2-48d0-b73e-19f85f42e26eПробовали с разными вариантами настроек. Например вот:
TrustServerCertificate=true;Type System Version=SQL Server 2005;Integrated Security=False;Encrypt=False;
Насколько мы понимаем, SQL Server не поддерживает современные протоколы типа ssl, поэтому коннекта не случается. Есть ли какая-то возможность устранить данную проблему без замены БД? Отключить шифрование, например. Или ещё как-то.
20.06.2025 в 15:10 #39100Mikhail
МодераторДобрый день!
Сталкивались с подобной ошибкой у клиента. Удалось подключиться на MSSQL 2008 R2 с последними обновлениями, доступными для той версии. При этом Rapid SCADA должна стоять на Windows.Т.к. у вас более ранняя версия MSSQL, то его, наверное, потребуется обновить до актуальной версии и перенести БД, чтобы соединение стало возможным. Либо создать отдельную базу на PostgreSQL.
20.06.2025 в 15:19 #39102Andr
УчастникПримерно к такому же выводу пришли и наши специалисты. Что версия MS SQL должна быть не ниже 2008.
К сожалению, возможности обновить его нет(
Как и использовать PostgreSQL. Всё равно нужно будет переносить в MS SQL, на котором работает 1С. Конечная цель работать с этими данными именно в 1С.То есть, судя по Вашему ответу и информации, которую я нашёл на форуме, с SQL Server 2005 пожениться никак не выйдет и основным вариантом остаётся API?
23.06.2025 в 13:36 #39148Mikhail
МодераторЧтобы соединиться именно с MSSQL 2005, нужно написать какую-то промежуточную программу, используя средства разработки тех лет. Или может быть в самом MSSQL 2005 есть возможность соединиться с другой БД и забрать из неё данные.
23.06.2025 в 15:15 #39160Andr
УчастникПонятно. Спасибо за ответ. Будем прорабатывать варианты.
26.06.2025 в 16:45 #39203qweqweqwe
УчастникДобрый день!
Посмотрите тему https://forum.rapidscada.ru/?topic=rapidscada-%d0%b2%d0%b7%d0%b0%d0%b8%d0%bc%d0%be%d0%b4%d0%b5%d0%b9%d1%81%d1%82%d0%b2%d0%b8%d0%b5-%d1%81-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%be%d0%b9-%d0%b8%d0%b7-1%d1%81
в ней пример взаимодействия как напрямую так и через стороннюю БД.27.06.2025 в 07:55 #39212Andr
УчастникЗдравствуйте!
Хорошо, спасибо, будем рассматривать все возможные варианты. -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.