Подтвердить что ты не робот

SQL Network Interfaces, ошибка: 26 - Ошибка определения местоположения сервера/экземпляра

Ну, у меня есть большая проблема, которую я пытаюсь решить несколько дней, но я не мог этого сделать, поэтому мне нужна ваша помощь. У меня есть веб-приложение в asp.net 4.0, где я реализовал пользовательские поставщики членства и роли. Когда я открываю домашнюю страницу приложения, он подключается к базе данных и получает некоторую информацию. Существует также форма входа в систему, и когда я вхожу в систему, он проверяет пользователя через базу данных и перенаправляет меня на зарезервированные страницы, но появляется эта ошибка:

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

Описание:

Необработанное исключение произошло во время выполнения текущего веб-запрос. Просмотрите трассировку стека для получения дополнительной информации о ошибка и где она возникла в коде.

Сведения об исключении:

System.Data.SqlClient.SqlException: связанный с сетью или произошла ошибка конкретного экземпляра при установлении соединения с SQL Server. Сервер не найден или не был доступен. проверить что имя экземпляра верное и что SQL Server настроен на разрешить удаленные подключения. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - Ошибка определения местоположения сервера/экземпляра)

Ошибка источника:

Необработанное исключение было создано во время выполнения текущий веб-запрос. Информация о происхождении и местонахождении исключение может быть идентифицировано с использованием трассы стека исключений ниже.

Я пробовал много вещей, некоторое решение, которое я нашел в stackoverflow, но ничего не получилось. Вот мои связи:

<connectionStrings>
  <clear/>
  <remove name="LocalSqlServer"/>
     <add name="LocalSqlServer" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
        Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
        Packet Size=4096" providerName="System.Data.SqlClient" />
     <add name="AgencyConn" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
        Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
        Packet Size=4096" providerName="System.Data.SqlClient"/>
</connectionStrings>

Ниже приведен список раздела web.config по членству и роли:

<membership defaultProvider="AuthProvider">
  <providers>
    <clear/>
      <add name="AuthProvider" type="AuthenticationProvider" applicationName="~/Reserved/" connectionStringName="AgencyConn"/>
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
  <providers>
    <clear/>
      <add name="MyRoleProvider" type="RoleAccessProvider" connectionStringName="AgencyConn"/>
  </providers>
</roleManager>

Пожалуйста, кто-нибудь поможет выяснить, что не так?

4b9b3361

Ответ 1

Если вы подключаетесь с Windows-машины A к Windows-машине B (сервер с установленным SQL Server) и получаете эту ошибку, вам необходимо сделать следующее:

На машине B:

1.) включите службу Windows под названием "Браузер SQL Server" и запустите службу

2.) в брандмауэре Windows, включите входящий порт UDP 1434 (в случае соединения SQL Server Management Studio на машине A или подключения программы на машине A)

3.) в брандмауэре Windows, включите входящий порт TCP 1433 (в случае подключения telnet)

4.) в диспетчере конфигурации SQL Server, включите протокол TCP/IP для порта 1433

enter image description here

Ответ 2

Для меня проблема была в том, что запись DNS была неправильной...

Следующее, что оказалось очень полезным, в основном взято из этого блога.

Это сообщение об ошибке на самом деле довольно специфичное, а решение довольно простое.

Это сообщение об ошибке появляется только в том случае, если вы пытаетесь подключиться к именованному экземпляру SQL Server. Для экземпляра по умолчанию вы никогда не увидите этого, потому что даже если мы потерпели неудачу на этом этапе (т.е. произошла ошибка при поиске указанного сервера/экземпляра), мы продолжим попытки подключения, используя значения по умолчанию, например, порт TCP по умолчанию 1433, имя канала по умолчанию для именованных каналов.

Каждый раз, когда клиент устанавливает соединение с именованным экземпляром SQL Server, мы будем отправлять UDP-пакет SSRP на UDP-порт 1434 компьютера-сервера. Этот шаг необходим для получения информации о конфигурации экземпляра SQL, например, включенных протоколов, порта TCP, канала имя и т.д. Без этой информации клиент не знает, как подключиться, и это сообщение об ошибке не срабатывает.

Одним словом, причина, по которой мы получаем это сообщение об ошибке, заключается в том, что клиентскому стеку не удалось получить UDP-ответ SSRP-пакета от браузера SQL. Чтобы точно определить проблему, выполните следующие действия:

  1. Убедитесь, что имя вашего сервера указано правильно, например, нет опечатки в имени.

  2. Убедитесь, что имя вашего экземпляра правильное и на вашем целевом компьютере действительно есть такой экземпляр. (Учтите, что некоторые приложения преобразуют\в).

  3. Убедитесь, что сервер доступен, например, DNS может быть разрешен правильно, вы можете пропинговать сервер (не всегда верно).

  4. Убедитесь, что на сервере запущена служба браузера SQL.

  5. Если на сервере включен брандмауэр, необходимо исключить sqlbrowser.exe и/или UDP-порт 1434.

В одном угловом случае вы все еще можете потерпеть неудачу после проверки шагов 1-4. Это также может произойти, когда:

  1. ваш сервер является именованным экземпляром в кластере или на компьютере с несколькими компьютерами
  2. ваш клиент - это машина Vista с включенным брандмауэром.

Инструмент, который может оказаться полезным (это сделал для меня) - PortQry. Если эта команда возвращает информацию, и она содержит ваш целевой экземпляр, вы можете исключить возможность 4) и 5) выше, что означает, что у вас запущен браузер SQL, и ваш брандмауэр не блокирует UDP-пакет браузера SQL. В этом случае вы можете проверить другие возможные проблемы, такие как неверная строка подключения.

И последнее замечание: сообщение об ошибке для той же проблемы при использовании SNAC: [Собственный клиент SQL] Сетевые интерфейсы SQL: ошибка при поиске сервера/указан экземпляр [xFFFFFFFF].

Недавно Microsoft выпустила пошаговое руководство, которое может служить универсальным средством для устранения большинства проблем с подключением к SQL Server: Устранение ошибок подключения к SQL Server

Ответ 3

Ответ в самом сообщении об ошибке:

Error Locating Server/Instance Specified

В принципе, у вас неправильный сервер\экземпляр в строке подключения, т.е. этот бит:

Data Source=MSSQL2008-1

неверно и не указывает на сервер, или имя сервера не разрешает IP-адрес. Две другие возможности: (1) Служба просмотра SQL в ящике, на котором запущена SQL Server, не работает или (2) Брандмауэр Windows (или какой-либо другой брандмауэр) в ящике SQL запрещает входящие соединения.

В конечном счете, если имя сервера верное, то оно превращается в проблему с сетью, и вам нужно выяснить, почему клиент не может подключиться к серверу (и это будет скорее всего основной сетевой проблемой, чем SQL Server проблема конфигурации).

Ответ 4

У меня была такая же проблема в моем приложении ASP.NET MVC 4.

То, как я это решил, было в DatabaseContext. Передав имя строки подключения, которую я хотел использовать через базовый конструктор.

public class DatabaseContext : DbContext
{ 
    public DatabaseContext()
        : base("DefaultConnection") // <-- this is what i added.
    {
    }

    public DbSet<SomeModel> SomeModels { get; set; }
}

Ответ 5

Перейдите в окно + R и введите services.msc и нажмите ввод.

Затем запустите SQL-сервер вручную, если он не запущен автоматически.

Затем вы пытаетесь войти, это должно быть работает.

Ответ 6

У меня была такая же ошибка, и я запустил службу SQL Server Express, и она сработала. Надеюсь, это поможет.

Ответ 7

Измените. \SQLEXPRESS, и добавьте только свое экспресс-имя SQL, и это работает для меня

 <add name="BlogDbContext" connectionString="data source=your name here; initial catalog=CodeFirstDemo; integrated security=True" providerName="System.Data.SqlClient"/>

Ответ 8

Недавно мы получили ту же самую проблему. Мы выяснили, что код ищет строку подключения с именем "LocalSqlServer" в файле machine.confg. Мы добавили эту строку, и она работает нормально.

Ответ 9

У меня была эта проблема и исправлена. проблема заключалась в следующем:

не так:

<add key="aaa" value="server=[abc\SQL2K8];database=bbb;uid=ccc;password=ddd;" />

вправо

<add key="aaa" value="server=abc\SQL2K8;database=bbb;uid=ccc;password=ddd;" />

Ответ 10

Проблема вызвана тем, что DNS не смог разрешить имя хоста. Попробуйте использовать IP-адрес вместо "имени компьютера".

Ответ 11

В моем случае имя connectionString в файле web.config было написано неправильно. Это имя контекста базы данных, используемого Entity Framework. Я думаю, это ошибка, которую вы получаете, когда EF не может сопоставить имя connectionString с контекстом.

Ответ 12

В моем случае я искал услуги. Затем нашел службу под названием "SQL Server (SQLEXPRESS)". Затем щелкните правой кнопкой мыши на этом. Выберите свойства. Затем нажмите кнопку "Пуск". Вот и все. Решил проблему.

Ответ 13

Эта проблема заняла меня примерно один день, на одном из моих проектов ASP.NET MVC, к счастью, у меня была проблема на моей машине, а не в производственной среде, поэтому сравнение web.config я вижу и удаляю, что ошибка исчезла... истинная задача связать ошибку SQL Server 26 с этой проблемой

Ответ 14

Та же проблема. В моем случае я решил установить проект как "StartUp Project".

Ответ 15

Мне трудно понять, что с этим не так. я до сих пор не могу войти со вчерашнего дня.

Ответ 16

Если вы используете Developer Edition для SQL Server, измените ".\SQLEXPRESS" на имя вашего компьютера в строке подключения.

Перед тем:

Источник данных =.\SQLEXPRESS; Начальный Каталог = SchoolDB-EF6CodeFirst Интегрированное Безопасность = True; MultipleActiveResultSets = True

После того, как:

Источник данных = DESKTOP-DKV41G2; Начальный Каталог = SchoolDB-EF6CodeFirst Интегрированное Безопасность = True; MultipleActiveResultSets = True