Созданные ответы форума
-
АвторСообщения
-
JurasskPark
УчастникМихаил, я конечно понимаю, что версия 5 и актуальная будет 6, я собственно тоже понял, что пока я только начал делать проект нужно переходить на 6. Но раз предыдущий автор темы не прислал, то пришлю я, т.к. я сегодня это обнаружил спустя 10 дней. 😀 У меня тоже MS SQL. 🙂
Текущие данные
Error Number:8023,State:1,Class:16
2022-08-18 10:35:01 Невозможно добавить текущие данные в очередь. Максимальный размер очереди 1000 превышен
2022-08-18 10:35:01 Невозможно добавить текущие данные в очередь. Максимальный размер очереди 1000 превышен
2022-08-18 10:35:02 Невозможно добавить текущие данные в очередь. Максимальный размер очереди 1000 превышен
2022-08-18 10:35:02 Невозможно добавить текущие данные в очередь. Максимальный размер очереди 1000 превышен
2022-08-18 10:35:02 Ошибка при экспорте текущих данных:
System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Commit()
at Scada.Server.Modules.DbExport.Exporter.ExportCurData()
2022-08-18 10:35:02 Ошибка при экспорте среза по триггеру «Триггер на архивные данные»:
System.Data.SqlClient.SqlException (0x80131904): The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 6 («@val»): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`
1 wrapCloseInAction)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Scada.Server.Modules.DbExport.Exporter.<ExportSnapshot>g__ExportDataPoint|42_0(Int32 cnlNum, <>c__DisplayClass42_0& , <>c__DisplayClass42_1& , <>c__DisplayClass42_2& )
at Scada.Server.Modules.DbExport.Exporter.ExportSnapshot(Srez snapshot, DbTransaction trans, IEnumerable`1 dataTriggers)
ClientConnectionId:4532edae-6378-4afe-9cd0-a4209948e44a
Error Number:8023,State:1,Class:16
Архивные данные
2022-08-18 10:35:00 Ошибка при экспорте архивных данных:
System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Commit()
at Scada.Server.Modules.DbExport.Exporter.ExportArcData()
2022-08-18 10:35:01 Невозможно добавить текущие данные в очередь. Максимальный размер очереди 1000 превышен
2022-08-18 10:35:01 Ошибка при экспорте среза по триггеру «Tриггер на текущие данные»:
System.Data.SqlClient.SqlException (0x80131904): The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 6 («@val»): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Scada.Server.Modules.DbExport.Exporter.<ExportSnapshot>g__ExportDataPoint|42_0(Int32 cnlNum, <>c__DisplayClass42_0& , <>c__DisplayClass42_1& , <>c__DisplayClass42_2& )
at Scada.Server.Modules.DbExport.Exporter.ExportSnapshot(Srez snapshot, DbTransaction trans, IEnumerable`1 dataTriggers)
ClientConnectionId:4532edae-6378-4afe-9cd0-a4209948e44a
Error Number:8023,State:1,Class:16
-
Этот ответ был изменен 2 года, 11 месяцев назад от
JurasskPark.
JurasskPark
УчастникЯ не против, т.к. это ваш драйвер на 95% )
JurasskPark
Участник* Драйвер KpDbImport уже существует. Ваш драйвер достаточно отличается от исходного, поэтому должен называться иначе.
Теперь он называется KpDbImportPlus 😀
Вроде всё поправил…
https://github.com/JurasskPark/RapidScada_v5JurasskPark
УчастникВроде удалил. Файлы bin и obj тоже. 🙂
JurasskPark
Участникhttps://github.com/JurasskPark/RapidScada_v5/tree/RapidScadav5/OpenKP
Если не сложно, можете проверить и сказать всё правильно или что-то не так сделал?
JurasskPark
Участникhttp://jurasskpark.magicteam.net/tmp/KpDbImport_5.1.1.0_Source.zip
Вернул назад в ссылках путь KpImport.
Добавил поддержку Firebird.
Type столбца теперь беру от reader.GetFieldType, но подстраховку оставил небольшую…https://www.youtube.com/watch?v=0pmoqQkmXyg
P.S.
Вы могли бы сделать в общем доступе инструкцию по драйверу и опубликовать ссылку здесь?
Инструкцию по драйверу я напишу чуть позже… но вот хоть GitHub есть, но ни разу в нём не публиковал ничего… Надо сначала научиться. 🙂
JurasskPark
УчастникМихаил, мне очень стыдно. Я сделал опасное допущение.
Во-первых, я не ту версию выложил, там я путь DBImport случайно заменил на ODBC.
В новой я исправил версии. Прошу прощения.
В-вторых, я забыл добавить версию, где есть Firebird.
В-третьих, способ, где я смотрю на свойства таблиц — работает для MS SQL.
Я сейчас на виртуалке поставлю все СУБД, что в драйвере, все протестирую и тогда мне будет спокойно на душе. А пока стыдно :((( Прошу прощения!JurasskPark
УчастникИдея 🙂 А помимо исторических данных — сделать выгрузку таблиц конфигурации в СУБД 🙂
Сейчас (в 5 версии) же идёт выгрузка не названий, а номеров KP, поэтому приходиться выгружать DAT файлы конфигурации в CSV, а потом их вставлять в БД, чтобы представление понимало, что под номером какой КП находится… (ну это у меня :))-
Этот ответ был изменен 2 года, 11 месяцев назад от
JurasskPark.
JurasskPark
УчастникТак я и написал инструкцию. Он в помощи драйвера.
А так это ваше детище и вы лучше знаете как он работает и что умеет. 🙂JurasskPark
УчастникДобрый день, не подскажите, как лучше реализовать: написать свой модуль, который будет записывать результаты дорасчетных ТИ или можно через модуль импорт делать update.
Извините за наглость, но мне кажется, что вам нужно получше объяснить с реальными примером зачем это делается.
Например, может проще расписание повесить на SQL, а не кнопку. А может по 1 команде создавать временную таблицу и включать триггер на запись, второй командой отключать триггер. Вариантов много. 🙂 Лично я ничего не понял из вашей задачи. 🙂-
Этот ответ был изменен 2 года, 11 месяцев назад от
JurasskPark.
JurasskPark
УчастникДоделал я драйвера. Можете читать код и офигевать от ужасного кода и писать, что так писать код нельзя. 😀
https://jurasskpark.magicteam.net/tmp/KpDbImport_5.1.0.0_Source.zipВидео как это всё работает здесь:
https://www.youtube.com/watch?v=antapADVLzM-
Этот ответ был изменен 2 года, 11 месяцев назад от
JurasskPark.
JurasskPark
УчастникОк. 1 участник — не записывать.
Остались Михаила и Romiros мнение услышать. 🙂JurasskPark
УчастникТак значение есть. Нет времени у значения, чтобы архивный срез записать. 🙂
JurasskPark
Участникhttp://jurasskpark.magicteam.net/tmp/030.png
http://jurasskpark.magicteam.net/tmp/031.pngНа практике столкнулся, когда DateTime была null. Обернул это в логи и try{} catch{}.
Дайте совет… Когда название тега, значение есть, а времени нет… То что делать? Оставлять как есть, т.е. тег не будет записан, т.к. у среза не может быть время null или ставить текущую дату?JurasskPark
УчастникМихаил, вы только не ругайтесь, но я тупой и поэтому решил не выдумывать новый плагин, а изменил ваш. 🙂
И кстати, после того как поработал немного в системе — я полностью согласен с Romiros, что экспорт в БД не нужна. Да и от расписания я отказался в виду бессмысленности…
Пока драйвер я еще тестирую, баги есть, небольшие, гавно-код и лапшу я старался не писать…
Короче, вот видео. 🙂
https://www.youtube.com/watch?v=ib3CeeEe7lA -
Этот ответ был изменен 2 года, 11 месяцев назад от
-
АвторСообщения