SQL Server 已启动但未侦听任何端口

9 sql-server windows

我新安装了 SQL Server 2012。尚未创建数据库。我可以使用 sa/password 打开 Management Studio。Binn\sqlservr.exe 作为服务启动,我可以在服务列表中看到它启动。但是,它没有侦听 1433 端口,甚至默认情况下也没有侦听任何端口,如下所示:

tasklist|find /I "sql"
Run Code Online (Sandbox Code Playgroud)

我有:

sqlservr.exe                  5668 Services                   0     40,112 K
Run Code Online (Sandbox Code Playgroud)

其中5668我认为是PID。然后获取 PID = "5668" 正在监听哪个端口:

netstat -ano | find /I "5668"
Run Code Online (Sandbox Code Playgroud)

但我除了空白什么都没有。另一方面,在本站搜索帖子后,我再次检查了我的 SQL Server 配置:开始->所有程序-> Microsoft SQL Server 2012 -> 配置工具 -> SQL Server 配置管理器-> SQL Server SQL Native Client 11.0配置 -> 客户端协议 -> TCP/IP -> 默认端口 1433。有 3 个服务,SQL Server(MyInstanceName)、SQL Server Agent(MyInstanceName) 和 SQL Server Browser。最后两个停止。

SQL Server 配置管理器-> SQL Server 网络配置-> MyInstanceName 的协议-> TCP/IP 默认禁用,在我启用它并重新启动服务后重复 netstat -ano | find /I "newPIDNum" 命令我找到了

TCP    0.0.0.0:52395          0.0.0.0:0              LISTENING  5668(newPIDNum)   
Run Code Online (Sandbox Code Playgroud)

为什么是 52395 而不是 1433?我无法使用 Windows ODBC 数据源管理员创建 DSN,这会返回一个错误:未找到指定的 SQL 服务器。对我有什么帮助吗?谢谢。

小智 19

使我的 SQL 服务器侦听TCP端口 1433 上的连接的原因如下...

  1. 配置工具/SQL Server 配置管理器
  2. 单击 SQL Server 网络配置中的实例名称
  3. 启用TCP通信
  4. 右键单击TCP通信条目,选择Properties
  5. 单击 IP 地址选项卡
  6. 启用所有非 VMnet IP 地址并在PortIPAll ”条目中输入 1433 。
  7. 在 SQL Server 服务选项卡上重新启动 SQL Server
  8. 检查您的配置netstat -an

    C:\>netstat -an | find "1433"
      TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING
      TCP    [::]:1433              [::]:0                 LISTENING
    
    Run Code Online (Sandbox Code Playgroud)


Rem*_*anu 13

为什么是 52395 而不是 1433

命名实例侦听动态端口。Sql Server 浏览器服务的工作是通知客户端实际端口。Sql 浏览器侦听 UDP 1434 并回答“实例“foo”的侦听端口是什么?”形式的问题。TCP 和命名管道协议都需要 Sql Server Browser 服务。客户端透明地使用 SQL Server Browser,无需特殊配置。通过在连接字符串(或 ODBC DSN)中简单地指定一个实例名称,客户端库知道它必须首先联系 SQL Server Browser 服务。

有 3 个服务,SQL Server(MyInstanceName)、SQL Server Agent(MyInstanceName) 和 SQL Server Browser。最后两个停了

显然,SQL Server Browser 要完成它的工作,它需要被启动。启动它,并将启动类型更改为自动。

作为旁注,经常使用的替代配置是为命名实例使用静态端口并在连接字符串 ( tcp:<hostname>:<port>) 中指定端口。它具有将 SQL Server Browser 排除在外的优势,但它需要仔细维护客户端。更改侦听端口需要在所有客户端、所有机器、所有位置进行精心策划的更改,这通常是一个很大的痛苦。我建议改为依赖 SQL Server Browser。