Что заставляет DbDataAdapter.Fill заполнять DataSet с неправильным количеством столбцов? - PullRequest
0 голосов
/ 02 ноября 2008

У меня есть служба Windows, подключающаяся к базе данных SqlServer на локальном компьютере. Это работает отлично почти все время. Однако у крупного клиента связь с базой данных повреждена по редкой и неизвестной причине. Когда это происходит, вызовы DbDataAdapter.Fill возвращают DataSet с другим количеством столбцов, чем в переданной команде select (проверяется журналами трассировки, показывающими ожидаемый sql и количество возвращаемых столбцов). Похоже, что для первых нескольких наборов данных с ошибками экземпляр адаптера возвращает результаты предыдущего запроса. Это происходит, даже если объекты адаптера являются уникальными экземплярами, а вызовы создания соединения / адаптера защищены от потоков (поскольку DbProviderFactory не является потокобезопасным).

Кто-нибудь испытывал это или что-то подобное? Кто-нибудь знает, что может быть причиной этого? В данный момент мне трудно придумывать новые идеи по этой причине.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2008

Попробуйте на некоторое время отключить пул соединений, посмотрите, облегчает ли это проблему. Я видел этот вопрос, заданный где-то еще, я думаю, что пул соединений был вовлечен, но я не уверен. Я посмотрю, смогу ли я найти другой форум, или, может быть, кто-то еще помнит его тоже?

0 голосов
/ 02 ноября 2008

Заполняете ли вы строго типизированный набор данных (STDS)? Если вы заполняете STDS, если имена и типы столбцов не совпадают, вы получите таблицы с некоторыми фантомными столбцами ... именно такими, которые были определены в схеме STDS, а не в возвращенном наборе записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...