Невозможно увидеть таблицы SQL Server 2008 в конструкторе структуры сущностей Visual Studio 2010 после перемещения базы данных на новый сервер - PullRequest
1 голос
/ 15 декабря 2011

У меня проблемы с просмотром таблиц из одной конкретной базы данных SQL Server 2008 при попытке обновить диаграмму структуры сущностей (EFD) в Visual Studio 2010. Это работало до переноса базы данных на новый сервер.Все остальные БД на этом сервере успешно отображают свои таблицы (когда в дизайне VS Entity Framework> Щелкните правой кнопкой мыши> Обновить модель из базы данных> вкладка «Добавить»> Расширить таблицы = здесь ничего не отображается).

STR

  1. Я создал базу данных на компьютере A и работал на том же компьютере в Visual Studio 2010, чтобы создать приложение для веб-сайта.Все работало нормально.

  2. Затем я переместил файлы приложений БД и веб-сайта на основной сервер, компьютер B.

  3. Я попытался подключитьсяот VS компьютера A и не смог увидеть какие-либо таблицы базы данных при попытке обновить мой EFD.

  4. Я попытался открыть VS локально на компьютере B, и я до сих пор не вижу таблицы EFD.

  5. Я попытался выполнить резервное копирование / восстановление БД, чтобы выяснить, не является ли это проблемой файла ОС.<- не повезло </p>

  6. Я попытался создать новую базу данных и использовать сценарии, сгенерированные в SQL Server, для создания новой базы данных безуспешно.

  7. Я также пытался сменить владельца БД, перейти к аутентификации sql и вернуться к аутентификации Windows и даже добавить безопасность другим пользователям, которые, как я полагаю, не связаны (например, системаи гость).

Я считаю, что это проблема с разрешениями, но я не могу найти каких-либо различий в работающих БД (правильно показать их таблицы в конструкторе структуры сущностей) иэтот, который не делает.Я также не вижу, какой пользователь VS может использовать для получения информации о таблице, я бы предположил, что я настроил соединение, но не уверен.

Я полностью застрял.В конструкторе структуры сущностей я пытаюсь подключиться с помощью «System.Data.SqlClient», встроенной проверки подлинности Windows (которая должна использовать учетную запись администратора в системе и владельца базы данных).Строка подключения для структуры сущностей выглядит следующим образом:

metadata=res://*;provider=System.Data.SqlClient;
    provider connection string="Data Source=localhost;Initial Catalog=myDB;
    Integrated Security=True"

Последнее замечание: если я просто зайду в VS в правом верхнем углу в моем обозревателе сервера, я могу создать соединение там и увидеть все таблицы простохорошо.Однако, к сожалению, это не помогает мне с EFD.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2011

Действия по устранению неполадок:

  1. Создать новую пустую базу данных
  2. Создание сценариев из старого
  3. Запуск сценариев один за другим, чтобы увидеть, что их нарушает (каждая таблица, представление и т. Д. По одному)

Я обнаружил, что это работало нормально, и ничего не сломало, но разница в том, что я не создавал новую схему и пользователя NT AUTHORITY / SYSTEM до самого конца сценариев, где они создавались в начале при запуске полный сценарий ранее (и он не работал). Я понятия не имею, почему это может быть проблемой - все таблицы были созданы с помощью 'dbo.' префикс в любом случае, поэтому не должен был быть помещен в эту схему.

Имея это в виду, я вошел в свою исходную базу данных и просто удалил схему и имя пользователя для NT AUTHORITY / SYSTEM, и все работает нормально. Опять же, я хотел бы комментарии, если у кого-то есть.

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

0 голосов
/ 15 декабря 2011

Это могут быть разные версии вашей сущности, но что-то не хватает в этих строках подключения, мой выглядит так:

 connectionString="metadata=res://*/xxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

У меня есть куча вещей до объявления провайдера.

Также вы пытались удалить строку подключения в файле .config и перезапустить мастер, как указано в этом ответе: Как мне отредактировать строку подключения Entity Framework? ?

Наконец, вы пытались просто создать другой файл .edmx с работающим соединением?Я думаю, что это не то, что создайте, если вы внесли много пользовательских изменений в слой объектов, которые не соответствуют вашему дизайну БД.

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