Ошибка соединения SQL в LINQ-to-SQL - PullRequest
1 голос
/ 06 декабря 2011

Я клонирую локальное приложение C # -SQL Windows Forms на новый ноутбук. Я успешно клонировал проект C # и создал резервную копию и восстановил базу данных SQL на новом компьютере, но новый проект не может прочитать / запросить какие-либо данные из новой клонированной базы данных SQL.

Поскольку база данных SQL является локальной, адресация LINQ-to-SQL немного отличается из-за того, что у компьютера другое имя. Поэтому я удалил представления таблиц SQL из существующего графического интерфейса LINQ .dbml, удалил старое соединение с сервером из обозревателя серверов, добавил новое соединение с сервером и перетащил объекты таблицы из нового объекта соединения данных обозревателя сервера. в пустой файл .dbml.

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

Исключение SqlException было обработано При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)

(клонированный сервер SQL настроен для разрешения удаленных подключений, TCP / IP включен в SQL, а исходное приложение C # -SQL работает без проблем.)

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Проверьте ваш Web.Config и убедитесь, что строка подключения установлена ​​правильно.Также убедитесь, что при инициализации DataContext используется правильная строка подключения из Web.Config.

Иногда при удалении базы данных из базы данных она не полностью очищает сеть.config старых записей.Найдите такую ​​строку в вашем файле designer.cs:

public SomeDbDataContext() : 
            base(global::System.Configuration.ConfigurationManager.ConnectionStrings["SomeDbConnectionString"].ConnectionString, mappingSource)
    {
        OnCreated();
    }

Сравните ее со строкой соединения в вашем web.config

<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
<add name="someDBConnectionString" connectionString="Data Source=SomeServer;Initial Catalog=SomeDB;Integrated Security=True" providerName="System.Data.SqlClient" /> 
<add name="theOLDDBConnectionString" connectionString="Data Source=SomeServer;Initial Catalog=OldDB;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
1 голос
/ 07 декабря 2011

Я бы проверил несколько вещей:

1) Запущен ли SQL Server на новом компьютере?

2) Настроен ли брандмауэр для разрешения соединений SQL?

3) Является ли механизм подключения клиента (именованные каналы, tcp / ip) также настроенным в SQL Server.

4) Есть ли допустимое сетевое подключение на новой машине (раньше у нас было много проблем на ноутбукахкогда они не были подключены к сети).

Возможно, вам повезет больше, если вы измените имя компьютера с SQL Server на . или (local), если вы всегда будете устанавливать БД ната же машина, что и приложение.

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