Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
Опытным путём обнаружено, что программа, написанная на C# и скомпилированная когда-то с настройкой Target Framework = .Net Framework 4, активно использующая обмен с MS SQL Server с использованием .Net SqlClient, вызывает эскалацию блокировок, будучи запущенной под Windows 10 с её встроенным .Net .

При работе с другими ОС (в том числе серверными от Win2008R2 до Win2016) ничего подобного не наблюдается.
Куда начинать смотреть для решения проблемы?
17 ноя 20, 13:29    [22233678]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
fkthat
Member

Откуда:
Сообщений: 4880
Что такое "встроенный в Windows 10 .Net"?
17 ноя 20, 13:33    [22233680]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
:)
Который ставится сразу при установке Win10, а не доустанавливается потом.
17 ноя 20, 13:45    [22233699]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
vb_sub
Member

Откуда:
Сообщений: 896
AR®,
разве тип блокировки не в тексте команды устанавливается? А если не установлен, то берется дефолтный по настройкам MS SQL сервера?
17 ноя 20, 13:48    [22233704]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
fkthat
Member

Откуда:
Сообщений: 4880
AR®
:)
Который ставится сразу при установке Win10, а не доустанавливается потом.

А полный сценарий использования SqlClient какой?
17 ноя 20, 14:02    [22233719]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4155
AR®
Опытным путём обнаружено, что программа, написанная на C# и скомпилированная когда-то с настройкой Target Framework = .Net Framework 4, активно использующая обмен с MS SQL Server с использованием .Net SqlClient, вызывает эскалацию блокировок, будучи запущенной под Windows 10 с её встроенным .Net .

При работе с другими ОС (в том числе серверными от Win2008R2 до Win2016) ничего подобного не наблюдается.
Куда начинать смотреть для решения проблемы?


Про опытный путь и эскалацию блокировок понравилось, пробрало даже

1. Что такое "вызывает эскалацию блокрировок"?
2. Т.е. я так понимаю, посмотреть в профайлере на "активный обмен" - даже мысли не было
17 ноя 20, 14:22    [22233751]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6192
Ролг Хупин
1. Что такое "вызывает эскалацию блокрировок"?

Повышение гранулярности блокировки, наверное.
Если полностью совпадает сценарий действий при работе "с другими ОС" и с Win10, то снять профайлером планы проблемных обращений, и сравнить. Если планы отличаются - в первую очередь проверить set-параметры соединения - здесь есть разъяснение, как эти параметры могут влиять на план.
17 ноя 20, 15:28    [22233869]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
vb_sub
AR®,
разве тип блокировки не в тексте команды устанавливается? А если не установлен, то берется дефолтный по настройкам MS SQL сервера?


Устанавливается и прекрасно работает, пока клиент запущен не на Win10. По меньшей мере, до 100 соединений, конкурирующих за данные в одной таблице.
Полный сценарий во всех подробностях не скажу, но общий смысл там такой.
Есть таблица с "планом работ", клиентское приложение должно получить "задание" из плана (1 запись), ещё не "взятое в работу" другими, и пометить его как взятое. После "выполнения задания" (несколько минут) пометить ту же запись как "выполненную".
17 ноя 20, 15:29    [22233870]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
В выходные покопался, похоже, дело не только в Win10.
1 дек 20, 14:07    [22240839]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
AR®,

А если перекомпилировать под 4.6, то проблема пропадает?
А вы явно блокировки указываете?

На мой взгляд дело в увеличении размера базы, произошедшего со времени компиляции приложения
1 дек 20, 15:39    [22240915]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
За прошедшие полгода дело стало хуже. :)
В дополнение к ранее описанным проблемам стала выскакивать довольно известная ошибка
"There is already an open DataReader associated with this Command which must be closed first."
Ничего не перекомпилировалось с незапамятных времён.
Такое ощущение, что два экземпляра клиентского приложения, будучи запущенными на одном и том же компьютере, начинают использовать один и тот же DataReader, хотя это и не возможно.
7 июн 21, 17:10    [22332439]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
Konst_One
Member

Откуда:
Сообщений: 11620
посмотрите что у вас с режимом MARS
7 июн 21, 18:02    [22332476]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
То-то и оно, что MARS... был выключен, точнее не включен явно, и все работало много лет.
Проблемы начались с распространением Win10, вчера пришлось таки перекомпилировать проектик, написав MARS=true (и найдя предварительно VS2010, в которой было когда-то это сделано).
8 июн 21, 09:19    [22332669]     Ответить | Цитировать Сообщить модератору
 Re: Работа .Net SqlClient Data Provider в разных версиях Windows /.Net  [new]
AR®
Member

Откуда: Подмосковье
Сообщений: 337
С включением MARS=true стала возникать, правда не часто, другая ошибка:

Unhandled Exception: System.Data.SqlClient.SqlException:
The server failed to resume the transaction. Desc:4200000001.
The transaction active in this session has been committed or aborted by another session.
8 июн 21, 13:52    [22332864]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить