AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 297506
Accepted
Koughdur
Koughdur
Asked: 2021-08-03 17:42:31 +0800 CST2021-08-03 17:42:31 +0800 CST 2021-08-03 17:42:31 +0800 CST

远程计算机无法使用反斜杠连接到实例

  • 772

我们正在将 Win7 计算机上的两个 SQL Server 2008 实例迁移到 Win10 服务器上的 SQL Server 2019。旧服务器有两个实例:123.123.123.123 和 123.123.123.123\ABC。我们从所有联网计算机连接到这两个实例都没有问题。

在新服务器上,实例为:CMP0123456 和 CMP0123456\ABC。我们可以连接到没有斜线的实例,但我们不能连接到有斜线的实例。错误是 SQL 错误 17:服务器不存在或访问被拒绝。

ping CMP0123456 适用于远程计算机。

我检查了配置管理器,并且 SQL Server 和 SQL Server 代理服务正在为这两个实例运行。浏览器也在运行。两个实例都使用 TCP/IP 和共享内存协议。命名管道被禁用。

我可以通过本地 SSMS 访问这两个实例。

我不是 DBA。我没有设置旧服务器或 SQL Server 2008。我对网络问题只是隐约熟悉。我检查了新服务器上的防火墙,并且端口 1433 和 1434 都已启用/打开。1433 使用 TCP,1434 使用 UDP。

出于某种原因,PolyBase 有端口 1433 和 1434。我安装了 PolyBase,但我认为我真的不需要它。如果这是问题所在,有没有办法将端口 1433 和 1434 直接关联到 SQL Server 2019?

或者我需要更改 SQL Server 和/或防火墙/网络/DNS 中的其他设置,以便远程计算机看到 \ABC 实例?

sql-server connectivity
  • 1 1 个回答
  • 240 Views

1 个回答

  • Voted
  1. Best Answer
    Dan Guzman
    2021-08-04T01:43:50+08:002021-08-04T01:43:50+08:00

    每个 SQL Server 实例侦听不同的端口。您的默认实例正在侦听端口 1433,但命名实例必须在不同的端口上侦听以避免冲突,默认情况下是动态分配的。

    确保防火墙也允许命名实例端口的 TCP 连接。动态端口号可以使用 SQL Server 配置管理器 (C:\Windows\System32\SQLServerManager15.msc) 识别,并且还会在启动时记录到 SQL Server 错误日志中(例如“服务器正在侦听 ['any' 12345]” )。

    为避免命名实例动态端口号更改时出现连接问题,请为命名实例分配静态端口号(连同 TCP 防火墙规则)或为命名实例 SQL Server 应用程序可执行文件(例如 C:\Program Files \Microsoft SQL Server\MSSQL15.ABC\MSSQL\Binn\sqlservr.exe")。

    在远程计算机上运行以下 PowerShell 命令以验证每个实例的 TCP 端口连接。

    Test-NetConnection 123.123.123.123 -Port 1433 # default instance
    Test-NetConnection 123.123.123.123 -Port 12345 # specify named instance port number
    

    在客户端连接字符串中指定实例名称(而不是端口号)时使用SQL Server Browser 。客户端 API 向浏览器服务发送一个 UDP 1434 请求,浏览器服务返回一个包含当前命名实例端口号的数据报,以供后续使用。这意味着 SQL Server Browser 服务正在运行,并且允许 UDP 1434 通过防火墙,以便按名称连接到命名实例。

    不幸的是,没有内置的 PowerShell 命令来测试远程 UDP 端口连接(至少我知道)。但是在 .NET 对象的帮助下,可以借助此脚本验证远程 SQL Server 浏览器的连接性,该脚本发送一个 UDP 1434 浏览器查询(从网络跟踪反向工程)以获取指定命名实例的信息。

    # verify UDP port 1434 connectivity and query SQL Server Browser for single instance
    
    $hostNameOrIpAddress = "CMP0123456"
    $instanceName = "ABC"
    
    try
    {
    
        Write-Host "Quering SQL Browser for host $hostNameOrIpAddress, instance $instanceName ..."
    
        $instanceNameBytes = [System.Text.Encoding]::ASCII.GetBytes($instanceName)
        $udpClient = New-Object Net.Sockets.UdpClient($hostNameOrIpAddress, 1434)
        $bufferLength = $InstanceNameBytes.Length + 2
        $browserQueryMessage = New-Object byte[] $bufferLength
        $browserQueryMessage[0] = 4
        $instanceNameBytes.CopyTo($browserQueryMessage, 1)
        $browserQueryMessage[$bufferLength-1] = 0
        $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)
        Write-Host "SQL Server Browser response received" -ForegroundColor Green
        $payloadLength = $browserResponse.Length - 3
        $browserResponseString = [System.Text.ASCIIEncoding]::ASCII.GetString($browserResponse, 3, $payloadLength)
        Write-Host "SQL Server Browser raw datagram value: $browserResponseString"
        $elements = $browserResponseString.Split(";")
        $namedInstancePort = ""
        Write-Host  "SQL Server Browser parsed datagram:`r`n"
        for($i = 0; $i -lt $elements.Length; $i = $i + 2)
        {
            if ($elements[$i] -ne "")
            {
                Write-Host  "`t$($elements[$i])=$($elements[$i+1])"
                if($elements[$i] -eq "tcp")
                {
                    $namedInstancePort = $elements[$i+1]
                }
            }
        }
    
    }
    catch [Exception]
    {
        Write-Host "ERROR: $($_.Exception.Message)" -ForegroundColor Yellow
    }
    
    • 3

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve