Microsoft.SqlServer.Management.Smo, выбрасывающий InvalidOperationExpcetion - PullRequest
0 голосов
/ 07 июня 2018

Я использую Microsoft.SqlServer.Management.Smo для чтения схемы базы данных в приложении веб-API 2.0 и проверки асинхронных запросов AJAX от клиента.

Я часто сталкиваюсь с исключением

Уже существует открытый DataReader, связанный с этой командой, который должен быть закрыт сначала

, пока я получаю доступ к схеме длявыполнить проверку таблиц, представлений, хранимых процедур и табличных функций и, наконец, получить строку подключения, создать отдельную команду SqlConnection и выполнить запрос вызывающего абонента.

кажется, что объекты базы данных загружаются по требованиюи считыватель данных остается открытым, а мой новый SqlConnection получает пул соединения, которое не было должным образом закрыто.

Кто-нибудь еще сталкивался с этой проблемой, и если да, как вы ее решили?

1 Ответ

0 голосов
/ 21 мая 2019

Я также столкнулся с этой проблемой, когда запускал несколько потоков для общего объекта Smo.Server.

Я решил проблему, создав новые экземпляры объекта Smo.Server для каждого потока, который обращался к данным в Smo.

Помните, что это может повлиять на производительность, если вы постоянно создаете новый экземпляр Smo.Серверные объекты.В этом случае может оказаться полезным поделиться объектом Smo.Server и осторожно использовать блокировать объекты для предотвращения одновременного доступа.

...