Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Добрый день ! создан небольшой проект, на C#. База выбрана на сервере MS SQL Server (10.50.6560 ) В базу с одного компьютера в одном потоке в одну таблицу пишется ( добавляются записи ) в реальном времени с частотой 2-3 записи в секунду. с этого же компьютера в двух других потоках , периодически в существующие записи обновляется информация. если в эту же базу во время работы первой программы обновлять ту же таблицу с другого компьютера по некоторым условиям, сервер иногда "теряет" некоторые записи (?!). везде используются транзакции, только на клиенте ( в программе на ПК ). подскажите, как "разруливать" эти ситуации ? смоделировать похожую ситуацию когда что то "пропадает", я пока не могу , в чем может быть причина ? MS SQL Не успевает ? Он установлен на сервере где диски SAS , 32 Gb RAM. спасибо. P.S> с SQL давно не работал, вот снова вернулся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 15:51 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryH, добавленные строки не могут исчезать из таблицы. Скорее всего, клиент завершает вставку с ошибкой, но вы ее не видите, например, по причине отсутствия обработки ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 16:17 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовValeryH, добавленные строки не могут исчезать из таблицы. Скорее всего, клиент завершает вставку с ошибкой, но вы ее не видите, например, по причине отсутствия обработки ошибки. может я не совсем правильно выразился, но исчезают , уже относительно давно добавленные записи ! немного кстати исчезают, всего количество записей в таблице за день - около 30 000 ( это мне кажется вообще ничто для сервера ?) , исчезают 1-2-3 записи. кстати, размер базы около 40 Мб. Она на каждый день очищается ( "сливается в другую базу"), и каждый день работа с ней - с чистой базой. то есть это происходит так - периодически смотрят отчет из этой таблицы, все нормально, к концу дня вдруг замечают, что там где было норм - не хватает записи ! в таблице несколько полей nchar(), datetime, int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 16:51 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Приходит злой барабашка и ворует записи, не иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 16:53 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHисчезают 1-2-3 записи.Варианта три: 1) записи вашей программой не добавляются 2) записи добавляются, но потом (после просмотра на экране) транзакция откатывается вашей программой. 3) записи вашей программой удаляются. Сиквел сам записи не удаляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 21:13 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
alexeyvgValeryHисчезают 1-2-3 записи.Варианта три: 1) записи вашей программой не добавляются 2) записи добавляются, но потом (после просмотра на экране) транзакция откатывается вашей программой. 3) записи вашей программой удаляются. Сиквел сам записи не удаляет. спасибо за конструктив, попробую ответить : 1. записи добавляются, так как с третьего ПК я периодически смотрю отчет по этой базе, и там видно что записи добавилсиь. 2. вот этот вариант не понятен (мне ) , как после просмотра отчета может откатываться транзакция ( записи ? ), которая уже давно по времени была завершена. 3. записи программой не удаляются , в программе на рабочем месте номер 1 в первом потоке только "Insert", во втором потоке - только update записей по условию, в третьем потоке - также только update по другому условию. удаления в принципе нет. прошу помощи , в чем же проблема ?? может быть ( теоретически ), что проблема в жестком диске на сервере ?? хотя там рейд , база лежит на рейде. настройки базы sql - самые стандартные, ничего в них не менял, индексов кстати тоже нет , триггеров также нет , кстати, пробовал ставить триггер на delete - ничего не поймал, хотя одна запись пропала. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:30 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryH2. вот этот вариант не понятен (мне ) , как после просмотра отчета может откатываться транзакция ( записи ? ), которая уже давно по времени была завершена. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:44 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ПосетительValeryH2. вот этот вариант не понятен (мне ) , как после просмотра отчета может откатываться транзакция ( записи ? ), которая уже давно по времени была завершена. Код: sql 1. 2. 3. 4. 5. 6. 7. где у меня insert, там вот так ( текст C# ) : Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:00 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHесли в эту же базу во время работы первой программы обновлять ту же таблицу с другого компьютера по некоторым условиям, сервер иногда "теряет" некоторые записи (?!).Если вы не знаете всех процессов на сервере, то есть простой вариант. Настраиваете профилер на delete/merge/update с подходящими условиями и ждёте, пока очередная запись не исчезнет. Потом ищете виновника в трассе. Update исключать нельзя, вдруг это не удаление, а изменение под другие условия выборки. Профилер может дать большую нагрузку в зависимости от происходящего с базой. И простой вариант- не всегда хороший. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:18 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
tunknownValeryHесли в эту же базу во время работы первой программы обновлять ту же таблицу с другого компьютера по некоторым условиям, сервер иногда "теряет" некоторые записи (?!).Если вы не знаете всех процессов на сервере, то есть простой вариант. Настраиваете профилер на delete/merge/update с подходящими условиями и ждёте, пока очередная запись не исчезнет. Потом ищете виновника в трассе. Update исключать нельзя, вдруг это не удаление, а изменение под другие условия выборки. Профилер может дать большую нагрузку в зависимости от происходящего с базой. И простой вариант- не всегда хороший. ] включал профилер пару раз просто на полную трассу, ничего так сходу не замечал, но спасибо, надо попробовать. странно, видимо "дурит" какой то какой то update, но очень странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:31 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryH2. вот этот вариант не понятен (мне ) , как после просмотра отчета может откатываться транзакция ( записи ? ), которая уже давно по времени была завершена.Это возможно, если просмотр делается на том компе, на котором запись добавляется. Тогда можно посмотреть на добавленную запись, пока транзакция не закоммичена, а потом её откатить. ValeryH3. записи программой не удаляются , в программе на рабочем месте номер 1 в первом потоке только "Insert", во втором потоке - только update записей по условию, в третьем потоке - также только update по другому условию. удаления в принципе нет.Может, она удаляется не программой. Мало ли, что там у вас. А может и в программе есть код удаления. ValeryHпрошу помощи , в чем же проблема ??Поставьте триггер на удаление, в нём генерите ошибку с высоким статусом и с WITH LOG, она будет записываться в лог Windows. Тогда вы точно узнаете, есть у вас удаления, или нет. ValeryHможет быть ( теоретически ), что проблема в жестком диске на сервере ?? хотя там рейд , база лежит на рейде. настройки базы sql - самые стандартные, ничего в них не менялНет, такое полностью исключено. Из за ошибок диска у вас бы база порушилась. Кстати, сделайте проверку - CHECKDB. ValeryHкстати, пробовал ставить триггер на delete - ничего не поймал, хотя одна запись пропала.А как вы ловите? Пишите в другую таблицу? Так записи тоже могут откатываться, если это откат транзакции. Лучше генерите ошибку с высоким severity и с WITH LOG. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:36 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHГде у меня insert, там вот так ( текст C# ) : Код: c# 1. Вот зачем это? Зачем эти выкрутасы со своей транзакцией? У вас же один insert, он и так будет выполняться в своей транзакции, не надо вам ещё накладывать других, да ещё и из C# ValeryHстранно, видимо "дурит" какой то какой то update, но очень странно.Да, кроме удапления может же быть какое то обновление записи, которое делает её как бы "удалённой" (для того отчёта). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:40 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
alexeyvgValeryHГде у меня insert, там вот так ( текст C# ) : Код: c# 1. Вот зачем это? Зачем эти выкрутасы со своей транзакцией? У вас же один insert, он и так будет выполняться в своей транзакции, не надо вам ещё накладывать других, да ещё и из C# то есть здесь транзакция не нужна из C# ? я ее просто потом добавил когда началось вот это странное поведение. ValeryHстранно, видимо "дурит" какой то какой то update, но очень странно.Да, кроме удапления может же быть какое то обновление записи, которое делает её как бы "удалённой" (для того отчёта). ну тут не только не видна для отчета. я еще просто делаю select * from в SM Studio, и это выдает меньше записей чем было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 10:17 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
alexeyvgValeryH2. вот этот вариант не понятен (мне ) , как после просмотра отчета может откатываться транзакция ( записи ? ), которая уже давно по времени была завершена.Это возможно, если просмотр делается на том компе, на котором запись добавляется. Тогда можно посмотреть на добавленную запись, пока транзакция не закоммичена, а потом её откатить. ValeryH3. записи программой не удаляются , в программе на рабочем месте номер 1 в первом потоке только "Insert", во втором потоке - только update записей по условию, в третьем потоке - также только update по другому условию. удаления в принципе нет.Может, она удаляется не программой. Мало ли, что там у вас. А может и в программе есть код удаления. ValeryHпрошу помощи , в чем же проблема ??Поставьте триггер на удаление, в нём генерите ошибку с высоким статусом и с WITH LOG, она будет записываться в лог Windows. Тогда вы точно узнаете, есть у вас удаления, или нет. ValeryHможет быть ( теоретически ), что проблема в жестком диске на сервере ?? хотя там рейд , база лежит на рейде. настройки базы sql - самые стандартные, ничего в них не менялНет, такое полностью исключено. Из за ошибок диска у вас бы база порушилась. Кстати, сделайте проверку - CHECKDB. ValeryHкстати, пробовал ставить триггер на delete - ничего не поймал, хотя одна запись пропала.А как вы ловите? Пишите в другую таблицу? Так записи тоже могут откатываться, если это откат транзакции. Лучше генерите ошибку с высоким severity и с WITH LOG. Код: sql 1. спасибо, попробую, да , я просто писал в другую таблицу из триггера. а кода удаления в программе точно нет. а просмотр делаю на разных компах, не только там где пишется. checkdb - все норм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 10:19 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичПриходит злой барабашка и ворует записи, не иначе. или у сервера нет совести ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 13:34 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинГавриленко Сергей АлексеевичПриходит злой барабашка и ворует записи, не иначе. или у сервера нет совести я извиняюсь, пока несколько дней программа не работает , не могу испытать про удаление, но вообще постараюсь доложить в чем было дело. а у сервера точно ее нет :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2019, 08:52 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Итак, сегодня снова пропала 1 запись ! как чуствовал, включил трасе почти перед этим, и вот что там - мне непонятно что это : одна запись в трасе такая : select ServerProperty('ErrorLogFileName') следом за ней : create table #err_log_tmp(ArchiveNo int, CreateDate nvarchar(24), Size int) insert #err_log_tmp exec master.dbo.sp_enumerrorlogs SELECT er.ArchiveNo AS [ArchiveNo], CONVERT(datetime, er.CreateDate, 101) AS [CreateDate] FROM #err_log_tmp er ORDER BY [ArchiveNo] ASC drop table #err_log_tmp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 13:18 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryH, Вам уже советовали выше - убать транзакцию. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 14:58 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Massa52ValeryH, Вам уже советовали выше - убать транзакцию. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Спасибо, попробую убрать. А что означает эта ошибка в профилере ? про финал посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 16:01 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHи вот что там - мне непонятно что это :Это команды вставок во временные таблицы. Никакой записи в постоянные таблицы у вас нет, значит, и пропадать нечему. Ещё, не знаю, что там у вас за таблицы, но по слову err можно подумать, что произошла какая то ошибка. Вы там, может, не только с транзакциями наворотили, но и обработчиков ошибок навставляли в сиквельный код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 16:03 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHА что означает эта ошибка в профилере ?Это что то ваше, сиквел сам так не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 16:03 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
alexeyvg, скорее SSMS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 16:09 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
кажется причина найдена, но не совсем понятна :(. найдено было время когда это происходит, в это время на сервере где крутится скуль, запускалось регламентное задание по копированию большой базы 1с с ее переиндексацией в 32разр режиме. сервер "проседал" ?! отменил это задание, хочу понаблюдать несколько дней. на сервере крутится также еще несколько задач, к тому же он еще обеспечивает сессии RDP. плохо то, что скуль получается невнятно что то абортит в моменты большой нагрузки на сервер, или я не могу это как то увидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 11:58 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHплохо то, что скуль получается невнятно что то абортит в моменты большой нагрузки на сервер, или я не могу это как то увидеть.Ничего там невнятного нет. Сиквел ничего не абортит в вашей терминологии, то есть не удаляет уже закомиченные транзакции. Ведь если записи показались в отчёте, значит, они уже в базе, и тразнзакция закоммичена? А уж что там у вас делается, непонятно, а сами вы не знаете. Например, ваша база может удаляться, и восстанавливаться из бакапа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 14:00 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
alexeyvgValeryHплохо то, что скуль получается невнятно что то абортит в моменты большой нагрузки на сервер, или я не могу это как то увидеть.Ничего там невнятного нет. Сиквел ничего не абортит в вашей терминологии, то есть не удаляет уже закомиченные транзакции. Ведь если записи показались в отчёте, значит, они уже в базе, и тразнзакция закоммичена? А уж что там у вас делается, непонятно, а сами вы не знаете. Например, ваша база может удаляться, и восстанавливаться из бакапа. записи в отчете показались, и я их вижу через запрос в SSMS. затем, через какое то время, а именно , определили, после определенного часа, запись одна или несколько просто пропадают из отчета ( ну и из SSMS я их тоже не вижу ) ! в течение текущего дня, бекапов не делается в это время и не восстанавливается тем более. то что я не знаю, это правда, вот и хочу узнать.. записи ( 1-2-3 ) просто исчезают магическим образом ... есть одна зацепка - во время работы программы. когда программа не работает , записи не исчезают, и то хорошо :). другая зацепка - заметили что когда на сервере происходит/начинается выполнение совсем не задачи скуль сервера, в это самое время и может пропадать запись, а может не пропадать, но именно в это время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 14:12 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Вы перестаньте делать ваши отчеты в изоляции read uncommitted, и все, скорее всего, сразу встанет на свои места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 14:17 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичВы перестаньте делать ваши отчеты в изоляции read uncommitted, и все, скорее всего, сразу встанет на свои места. спасибо за ценное замечание. но я явно так не делаю. подключаюсь через NET библиотеку C# в профилере вижу что подключение делается так : et quoted_identifier on set arithabort off set numeric_roundabort off set ansi_warnings on set ansi_padding on set ansi_nulls on set concat_null_yields_null on set cursor_close_on_commit off set implicit_transactions off set language русский set dateformat dmy set datefirst 1 set transaction isolation level read committed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 14:47 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Это не гарантия того, что вы читаете данные в read committed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 15:04 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичЭто не гарантия того, что вы читаете данные в read committed. подскажите, как сделать гарантировано ? спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 15:24 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
Написать непосредственно перед запросом нужный уровень изоляции и не использовать в тексте хапроса хинты, которые его меняют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 15:34 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
ValeryHГавриленко Сергей АлексеевичВы перестаньте делать ваши отчеты в изоляции read uncommitted, и все, скорее всего, сразу встанет на свои места. спасибо за ценное замечание. но я явно так не делаю.Точно не ставите в запросах отчёта nolock? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2019, 17:24 |
|
||
|
Одновременная работа с разных рабочих мест с базой.
|
|||
|---|---|---|---|
|
#18+
alexeyvgValeryHпропущено... спасибо за ценное замечание. но я явно так не делаю.Точно не ставите в запросах отчёта nolock? точно не ставлю nolock запросы простейшие , но в реальном времени, делается Insert 2-3 раза в секунду, в это же время в параллельном потоке по уже инсертерным записям делается некоторый update по условию, и еще в третьем потоке делается также по уже добавленным записям другой update по условию. вообще, решил понаблюдать за работой сервера, остановил на сервере то глобальное задание . вчера "полет" был нормальный. ни одна запись не пропала !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2019, 08:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1687956]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 286ms |
| total: | 483ms |

| 0 / 0 |
