Разрешение вопросов, связанных с доступом к данным в Visual Studio
Обновлен: Ноябрь 2007
В данном разделе перечислены типичные проблемы, возникающие при осуществлении доступа к данным в Visual Studio.
Во время выполнения нет доступа к базе данных, которая была доступна в режиме разработки
Обычно данная ситуация возникает потому, что используемые во время выполнения имя пользователя и пароль не предоставляют доступ к базе данных. Решение проблемы зависит от используемых при доступе к базе данных методов проверки подлинности и авторизации, а также от строки подключения.
Причиной данной проблемы может быть:
- Выбор параметра Использовать определенные имя пользователя и пароль и снятие параметра Разрешить сохранение пароля при завершении Диалоговое окно "Добавить/Изменить подключение" (вкладка "Общие"). В этом случае при попытке подключения к источнику данных в режиме разработки у пользователя запрашиваются имя и пароль. Для обеспечения подключения во время выполнения в приложении должны быть реализованы функции передачи источнику данных правильных имени пользователя и пароля.
Что следует проверить:
Убедитесь, что используемые приложением имя пользователя и пароль обеспечивают доступ к источнику данных.
Убедитесь, что база данных содержит правильные параметры разрешений для пользователя.
Убедитесь, что компьютер, на котором выполняется приложение, и источник данных соединены сетью.
Возвращение неверных выходных параметров или их отсутствие при выполнении команды SQL
Данная ситуация обычно возникает из-за неправильной настройки свойства Direction каких-либо параметров. Свойству параметра Direction присвоено значение, определенное в перечислении ParameterDirection.
Убедитесь, что свойство Direction параметра содержит значение, позволяющее принимать данные (Output — для выходных параметров).
Убедитесь, что тип данных параметра соответствует типу данных возвращаемого значения.
Примечание. Выходные параметры возвращаются в конце потока данных, поэтому в случае использования объекта DataReader (например SqlDataReader) следует закрыть его или дочитать данные до конца перед тем, как выходные параметры станут видимыми.
Дополнительные сведения по рассматриваемой проблеме и соответствующий образец кода можно получить, выполнив поиск по запросу "Q308051" на веб-узле службы поддержки продуктов Майкрософт(https://support.microsoft.com).
Получение сообщения об ошибке "Поставщик данных .NET (System.Data.SqlClient) требует установки компонентов доступа к данным Microsoft (MDAC) версии 2.6 или более поздней"
Microsoft SDK (пакет средств разработки программного обеспечения) для Windows и распространяемый пакет .NET Framework не содержат установщик компонентов MDAC. Все приложения .NET Framework, в которых используются функции доступа к данным, требуют для работы MDAC версии 2.6 или более поздней (рекомендуется MDAC 2.8 с пакетом обновления 1). Последнюю версию MDAC можно загрузить с веб-узла Майкрософт(https://www.microsoft.com).
Поскольку Visual Studio .NET устанавливает MDAC по умолчанию, рассматриваемая ошибка обычно возникает при развертывании приложения на компьютере, на котором не установлен продукт Visual Studio .NET.
Пользователь может сделать так, чтобы при развертывании его приложения программа установки проверяла версию MDAC на конечном компьютере. Дополнительные сведения см. в разделе Практическое руководство. Добавление условия запуска для компонентов доступа к данным MDAC.
Порождение непредвиденного исключения при попытке выполнить или отменить транзакцию
Когда ошибка в источнике данных приводит к немедленной отмене транзакции, в пользовательском приложении может возникнуть одна из следующих ошибок:
"Для запроса COMMIT TRANSACTION не найдено соответствующего BEGIN TRANSACTION"
"Для запроса ROLLBACK TRANSACTION не найдено соответствующего BEGIN TRANSACTION"
Хотя такое поведение предусмотрено при разработке, лучше всегда вызывать методы, которые обращаются к внешним источникам данных (подобные Commit и Rollback) из оператора Try...Catch. Дополнительные сведения содержатся в разделе Практическое руководство. Использование пробного блока и блока перехвата для перехвата исключений или try-catch (Справочник по C#) (Visual Basic).
Порождение InvalidOperationException при попытке удалить таблицы из набора данных
Если набор данных привязан к XmlDataDocument, то вызов метода Clear вызовет исключение:
System.InvalidOperationException: Невозможно добавить или удалить таблицы из набора данных, так как он сопоставлен с загруженным документом XML.
Очистка данных из набора данных, привязанных к объекту XmlDataDocument требует перемещения по таблице и удаления отдельных объектов DataRow. Дополнительные сведения об удалении строк данных из таблицы данных содержатся в Практическое руководство. Удаление строк из объекта DataTable и Метод DataRowCollection.RemoveAt.
Заголовки не изменяются при перетаскивании элементов из окна источников данных
При перетаскивании элементов из окна Источники данных, имена столбцов изменяются на основании регулярного выражения по умолчанию. Если имя столбца содержит строчный символ, за которым следует прописной символ, для разделения двух слов добавляется пробел. Кроме того, любые символы подчеркивания в имени столбца заменяются пробелами. Дополнительные сведения об изменении этого поведения содержатся в разделе Практическое руководство. Настройка способа создания подписи для элемента управления с привязкой к данным в Visual Studio.
Получение и отображение данных происходит медленно
Если проект использует Компонент BindingSource попробуйте задать RaiseListChangedEvents значение false. Это будет подавлять происходящие в списке события ListChanged и может повысить производительность на больших наборах данных.
После установки на Windows 2000 приложение дает сбой с предупреждением, что требуется MDAC 2.8
Любое приложение, ссылающееся на пространство имен System.Data, зависит от компонентов доступа к данным Microsoft (MDAC) версии 2.8 или более поздней. В большинстве случаев файл уже установлен как часть операционной системы. На компьютерах под управлением Windows 2000 с пакетом обновления 3 (SP3) и более ранними, может потребоваться установка компонента с вашим приложением. Это можно сделать, добавив его к пакету начального загрузчика и загрузив файл с узла Microsoft во время установки. Дополнительные сведения см. в разделе Развертывание необходимых компонентов (Visual Studio).
Генерируемые из базы данных значения INSERT или UPDATE возвращают NULL для классов преобразования языка LINQ в язык SQL
LINQ to SQL автоматически обрабатывает генерируемые в базе данных значения на принадлежность к столбцам ключей (автоприращение), rowguidcol (созданный базой данных уникальный идентификатор GUID) и столбцам меток времени. Генерируемые базой данных значения в других типах столбцов будут неожиданно давать нулевое значение. Для возврата значений базы данных нужно вручную задать IsDbGenerated в true и AutoSync в одно из следующих: Always, OnInsert или OnUpdate.
См. также
Основные понятия
Общие сведения об отображении данных
Другие ресурсы
Пошаговые руководства работы с данными
Начало работы с доступом к данным
Подключение к данным в Visual Studio
Подготовка приложения к получению данных
Отображение данных на форме в приложениях Windows