Не удается найти имя SQL-экземпляра на сетевом ПК

Я столкнулся с такой ситуацией уже дюжину раз и окончательно хочу для нее постоянного решения.

Проблема

Не удается найти имя экземпляра SQL Server Server на клиентском компьютере.

Примечание: - Я установил SQL Express и Management Studio как на сервере, так и на клиенте
Имя сервера ПК: M-PC
Версия сервера SQL: SQL Server 2008
Имя клиентского ПК: SHIVANG
Клиентская версия клиента: SQL Server 2008

Скриншот клиентского компьютера SQL Server

Решение, которое я пробовал

1) Полностью отключить брандмауэр сервера и клиентского ПК (Домен, Частный и Общественный)
2) Включение и перезапуск служб: SQL Server и Служба браузера введите описание изображения здесь 3) Включение параметров конфигурации сети SQL введите описание изображения здесь 4) Также разрешено "Разрешить удаленное соединение" с SQL Server как на ПК | 5) Сеть между обоими ПК идеально подходит для доступа к файлам через сеть ПК.
6) Даже изменили настройки конфигурации IP от получения до статичности ПК (IP-адрес сервера 192.168.1.41, а IP-адрес клиента - 192.168.1.44) введите описание изображения здесь
7) Я полностью удалил SQL Express и Management Studio с клиента и сервера и снова установил его.
8) Я также сказал моему клиенту отформатировать ПК, а затем установил SQL Express и Management Studio. Все еще ничего.
9) У них нет антивируса в любой системе (чтобы заблокировать соединение)

ЧАСТЬ FUN

Теперь интересная часть здесь, пока я возился с настройками клиентского и серверного ПК. Сервер ПК начал показывать экземпляр SQL-клиента клиента, пока клиентский ПК все еще не смог найти SQL-экземпляр сервера.

Ниже приведено изображение Server PC SQL Server
введите описание изображения здесь Ниже приведено изображение клиентского компьютера SQL Server
введите описание изображения здесь


Вот следующие настройки, которыми я занимался: -

  • Изменен IP-адрес от Получить до Статический как ПК (клиент и сервер)
  • Изменен протокол: TCP/IP SQL как на ПК (клиент и сервер) [извините, я забыл получить скриншоты из него и еще больше переиграл его, когда серверный ПК остановился, показывая экземпляр SQL-клиента клиента]

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

Заранее спасибо

Ответ 1

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

  • Конфигурация SQL Server. По умолчанию в Express, Developer и Издания Enterprise Evaluation, подключаемые по протоколу TCP/IP, отключены. Включите это с помощью диспетчера конфигурации SQL Server.
  • Брандмауэр Windows: При полном отключении брандмауэра для этого компонента это не лучшая практика безопасности (и это не так обязательный). (Примечание: в этом разделе я принимаю значение по умолчанию конфигурации. Существует множество настроек, которые можно изменить, немного повлиять на эти шаги.)

В зависимости от типа экземпляра SQL Server, к которому вы подключаетесь, существует два случая:

Ответ 2

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

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

Важно отметить, что протокол многоадресной рассылки UDP не гарантирует доставки запросов или ответов. Следовательно, может возникнуть потеря, которая может быть обнаружена только трассировкой сети. Протокол разрешения SQL Server не может знать, почему ответ не получен; это может быть связано с тем, что сервер отключен, проблема с сетью, брандмауэр, скрытый экземпляр SQL и т.д. Также многоадресные запросы UDP доставляются только устройствам в локальной подсети, поэтому разрешение ограничено этими машинами.

Далее PowerShell script отправляет запрос UDP на конкретный хост. Вы можете запустить это, чтобы служба SQL Browser отвечала ожидаемой информацией о экземпляре на хосте.

Function List-Instances($hostName)
{

    Write-Host ("Retrieving information from SQL Server Browser service on host $HostName ...");

    try
    {
        $udpClient = new-object Net.Sockets.UdpClient($HostName, 1434);
        $bufferLength =  1;
        $browserQueryMessage = new-object byte[] $bufferLength;
        $browserQueryMessage[0] = 2; # list all instances
        $bytesSent = $udpClient.Send($browserQueryMessage, $browserQueryMessage.Length);
        $udpClient.Client.ReceiveTimeout = 10000;
        $remoteEndPoint = new-object System.Net.IPEndPoint([System.Net.IPAddress]::Broadcast, 0);
        $browserResponse = $udpClient.Receive([ref]$remoteEndPoint);
        $payloadLength = $browserResponse.Length - 3;
        $browserResponseString = [System.Text.ASCIIEncoding]::ASCII.GetString($browserResponse, 3, $payloadLength);
        $browserResponseString
        $elements = $browserResponseString.Split(";");
        $elements
        $namedInstancePort = "";
        Write-host "SQL Browser Data:" -ForegroundColor Green;
        $i = 0;
        while($i -lt $elements.Length)
        {
            if([String]::IsNullOrEmpty($elements[$i]))
            {
                Write-Host "";
                $i += 1;
            }
            else
            {
                Write-Host $("    " + $elements[$i] + "=" + $elements[$i+1]) -ForegroundColor Green;
                $i += 2;
            }
        }
    }
    catch [Exception]
    {
        Write-host $("ERROR: " + $_.Exception.Message) -ForegroundColor Red;
    }

}

# send request to SQL Brower service to enumerate all SQL instances running on specific host
List-Instances -hostName "SomeMachine";

Таким образом, для успешного разрешения требуется:

  • Служба браузера SQL Server должна работать
  • UDP-порт 1434 должен быть разрешен через брандмауэр
  • Серверы должны находиться в одной подсети
  • Отсутствует потеря пакетов UDP
  • Серверы отвечают своевременно

Ответ 3

При установке SQL Express вы не можете получить доступ к ней из сети или удаленно. если вы не настроили параметр удаленного доступа

1 - В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите "Свойства".

2 - Нажмите Подключения node.

3 - В разделе Удаленные подключения к серверу установите или снимите флажок Разрешить удаленные подключения к этому серверу.