在网络PC

时间:2016-12-10 05:52:39

标签: sql sql-server sql-server-2008 networking

我现在已经十多次面对这种情况,最终希望永久解决它。

问题

在客户端PC上找不到Server PC的SQL实例名称。

注意: - 我已在服务器和客户端上安装了SQL Express和Management Studio 服务器PC名称:M-PC
服务器SQL版本:SQL Server 2008
客户端PC名称:SHIVANG
客户端SQL版:SQL Server 2008

客户端的PC SQL Server截图

我尝试过的解决方案

1)彻底关闭服务器和客户端PC的防火墙(域名,私人和公共)
2)启用和重新启动服务: SQL Server 浏览器服务 enter image description here 3)启用SQL网络配置设置 enter image description here 4)同时启用"允许远程连接"来自PC的两台PC 5)PC之间的联网是完美的,可以通过PC的网络访问文件 6)甚至改变了IP配置设置从获取到PC的静态(服务器的IP是192.168.1.41,客户端的IP是192.168.1.44 enter image description here
7)我已从客户端和服务器上完全卸载了SQL Express和Management Studio,并再次安装 8)我还告诉我的客户格式化PC,然后安装SQL Express和Management Studio。仍然没有。
9)他们在任何系统上都没有防病毒软件(阻止连接)

FUN PART

现在有趣的部分是我正在摆弄客户端和服务器PC的设置。 服务器PC开始显示客户端PC SQL实例,而客户端PC仍无法找到服务器SQL实例

下图是Server PC的SQL Server
enter image description here 下图是Client PC的SQL Server
enter image description here

以下是我一直在设置的以下设置: -

  1. 将IP从 获取 更改为PC(客户端和服务器)的 静态
  2. 更改了协议:PC的两个PC的TCP / IP(客户端和服务器)[抱歉,我忘了获取它的屏幕截图,当服务器PC停止显示客户端时,它甚至更多地摆弄它#39; PC SQL实例]

  3. 现在我不知道下一步要做什么来解决这个问题。如果可以,请帮帮我。

    提前致谢

4 个答案:

答案 0 :(得分:10)

为了允许远程访问,需要更改两个级别的安全性

  1. SQL Server配置:默认情况下,Express,Developer和 企业评估版通过TCP / IP协议连接被禁用。使用SQL Server配置管理器启用它。
  2. Windows防火墙:完全禁用防火墙将起作用 对于这个组件,这样做并不是一种安全性最佳实践(也不是 需要)。 (注意:在本节中,我假设是默认值 组态。有许多设置可以更改 稍微影响这些步骤。)
  3. 根据您要连接的SQL Server实例的类型,有两种情况:

    1. 默认实例(仅按计算机名称连接)。添加允许 传入规则在 TCP端口1433 或数据库引擎服务上
    2. 命名实例(按计算机名称+实例名称连接)。添加一个 允许 UDP端口1434 上的传入规则访问SQL浏览器 服务。在数据库引擎服务上添加允许传入规则。

答案 1 :(得分:0)

对于不一致的结果,我没有明确的答案,但我确实有一些背景信息可以帮助您解决问题。

使用SQL Server Resolution Protocol枚举SQL实例。这是一个应用层协议,它使用UDP(而不是TCP)向本地子网上的服务器发送枚举请求,并接收响应,如communication flow for multi-instance discovery diagram所示。 SQL Server Browser服务侦听UDP端口1434以处理枚举请求。

重要的是, UDP多播协议不保证提供请求或响应 。因此,可能发生只能通过网络跟踪检测到的丢失。 SQL Server解析协议无法知道为什么没有收到响应;这可能是因为服务器出现故障,网络问题,防火墙,SQL实例隐藏等。此外,UDP多播请求仅传送到本地子网上的设备,因此解决方案仅限于这些机器。

下面的PowerShell脚本向特定主机发送UDP请求。您可以运行此命令以确保SQL浏览器服务使用有关主机上实例的预期信息进行响应。

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 Browser服务必须正在运行
  • 必须允许UDP端口1434通过防火墙
  • 服务器必须位于同一子网
  • 没有UDP丢包
  • 服务器及时响应

答案 2 :(得分:0)

首先,确认防火墙设置。在非主机LAN计算机上安装SQL Server Management Studio,并检查是否可以使用主机的IP地址进行连接。如果未在主机服务器上启用SA,则可能意味着要弄乱登录权限。

SQL Server服务> SQL Server浏览器>右键单击>属性>服务>启动模式>自动。

SQL Server服务> SQL Server浏览器>右键单击>属性>开始

在主机和/或LAN计算机上打开命令提示符并执行:

sqlcmd -L

答案 3 :(得分:-1)

安装SQL Express时,无法从网络或远程访问它。 除非您配置远程访问选项

1 - 在对象资源管理器中,右键单击服务器并选择“属性”。

2 - 单击Connections节点。

3 - 在“远程服务器连接”下,选中或清除“允许与此服务器的远程连接”复选框。