Devil7DK Ответов: 1

Показывает "не удалось получить информацию о схеме для таблицы или представления" при извлечении данных из таблицы


Я могу успешно войти в систему и просматривать, редактировать данные и таблицы из SQL Management Studio с локального компьютера. Но при попытке сделать то же самое из любого другого приложения, например Visual Studio, я могу установить успешное соединение.. но не может извлечь данные из таблицы.

В visual studio это показывает
<OMSDB.dbo.Users>
Could not retrieve schema information for table or view OMSDB.dbo.Users.


Что я уже пробовал:

Раньше я мог получить доступ к той же базе данных без каких-либо проблем. Когда я сменил ОС, я установил SQL-сервер и подключил базу данных... после этого возникает только эта ошибка.

RickZeeland

Какой источник данных вы добавили? SQL Server, SQL Server CE или LocalDB ?
Можете ли вы показать нам код, который вы используете для подключения и открытия таблицы ?
Может быть, вы слишком рано закрываете соединение ?

Devil7DK

Конечно...

Вот он...

Функция LoadUsers (ByVal ConnectionString As String) Как Система.ComponentModel.BindingList (Пользователя)
Dim r как новая система.ComponentModel.BindingList (Пользователя)
Dim conn как новый SqlConnection(ConnectionString)
Коннектикут.Открыть()
Dim comm As New SqlCommand ("SELECT * FROM Users", conn)
Dim reader As SqlDataReader = comm.Метода executereader
Dim i как целое число = -1
В то время как читатель.Читать()
Дим РН как изображение = мой.Ресурсы.User_Default
Попробуй
PH = изображение.FromStream(новый IO.MemoryStream (CType (reader.Элемент ("Фото"), Байт())))
Поймать ex как исключение

Конец Попытки
Дим Credentials_ как строка = читатель.Пункт ("Полномочия").Метод toString
Тусклый cls как система.ComponentModel.BindingList (Of Credential) = Ничего
Если Credentials_ < & gt; "" То
cls = XMLParsers.Полномочия.FromXML(Учетные Данные_)
Конец, Если
Дим Permissions_ как строка = читатель.Пункт ("Разрешения").Метод toString
Dim Per As New List (Of String)
Если Permissions_ < & gt; "" То
Per = XMLParsers.ListOfString.FromXML (Разрешения_)
Конец, Если
r. Добавить (новый пользователь (читатель.идентификаторы элементов").Вы думаете, читатель.Пункт ("Имя Пользователя").Вы думаете, читатель.Пункт ("Пароль").Вы думаете, читатель.Пункт ("Рабочий Стол").Вы думаете, читатель.Пункт ("Дом").Вы думаете, читатель.Пункт("Пользовательского").Вы думаете, читатель.Пункт("Адрес").Вы думаете, читатель.Пункт ("Мобильный").Вы думаете, читатель.Пункт ("Электронная Почта").Метод ToString, ТВ.Метод toArray, читатель.Пункт ("Статус").ToString, PH, cls))
Конец Пока
Коннектикут.Закрывать()
Возвращение Р
Конечная Функция

и соединительная строка...

"Сервера= / отчеты по HP\; базы данных=OMSDB;идентификатор пользователя=СА;пароль=QW741erty;применение название=Управление системой управления;объединение=истина;"

RickZeeland

А что будет, если не закрыть связь с конном?Close () или закрыть его позже при выходе из программы ?

Devil7DK

"While reader. Read () "в этой строке я всегда получаю"false". даже есть данные в таблице (можно просмотреть с помощью SSMS), и эта строка находится перед "conn. close()"

если в моем коде есть проблема... почему та же ошибка возникает с Visual Studio....?

Devil7DK

@RickZeeland я не думаю, что проблема заключается в коде, так как этот же код работал с той же базой данных раньше...

RickZeeland

Это может быть проблема области действия, попробуйте переместить свой Bindinglist из функции на уровень класса.

Atlapure Ambrish

Вы пробовали это... говорит MSDN...

https://msdn.microsoft.com/en-us/library/bb629303.aspx

Devil7DK

@Амбриш Atlapure

MSDN говорит: "Нажмите кнопку ОК, чтобы закрыть диалоговое окно"...

:-(

1 Ответов

Рейтинг:
1

S Douglas

Если я правильно понимаю проблему. У вас на компьютере был экземпляр программы установки SQL. Заменил ОС, установил свежую версию SQL Server и подключил к ней базу данных. Однако теперь при подключении к SQL-серверу (которое успешно завершается) при попытке получить доступ к данным в базе данных OMSDB вы получаете сообщение об отказе.

Это, кажется, проблемы с разрешениями. По крайней мере, вам нужно будет предоставить пользователю учетную запись db_datareader. Хотя также возможно, что если логин пользователя был воссоздан на уровне SQL server, его SID не синхронизирован с пользователем базы данных. в этом случае системная хранимая процедура sp_change_users_login должна быть запущена на пользователе (в базе данных OMSDB).

EXEC sp_change_users_login 'Auto_Fix', 'user'