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


9

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

tasklist|find /I "sql"

我有:

sqlservr.exe                  5668 Services                   0     40,112 K

我认为其中5668是PID。然后要获取PID =“ 5668”正在侦听哪个端口:

netstat -ano | find /I "5668"

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

默认情况下,在启用SQL Server配置管理器-> SQL Server网络配置-> MyInstanceName的协议-> TCP / IP并将其重新启动服务并重复netstat -ano之后,默认情况下它被禁用。找到/ I“ newPIDNum”命令,我找到了

TCP    0.0.0.0:52395          0.0.0.0:0              LISTENING  5668(newPIDNum)   

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


默认的SQL Server网络配置(对于2008,找不到2012版本,但我认为没有什么不同)
Damien_The_Unbeliever 2013年

谢谢。对我来说真的是一个很好的帮助。关于我的DSN装箱还有其他评论吗?

看来您正在使用命名实例(据我所知,只有默认实例在1433上侦听)。尝试创建DSN时是否包括实例名称?
Damien_The_Unbeliever

是的,在安装时,我为实例输入了名称。创建DSN时,系统要求我输入一个DSN名称(我输入了一个任意名称),要连接的SQL Server(这是一个下拉选择框,在这里我尝试了两个选择都失败了,一个是(本地),另一个是是<.MyInstanceName>),

我还没有看到其他包含MyInstanceName的地方。下一个按钮指导我进行身份验证以及<客户端配置>,可以设置<服务器别名>,<服务器名称>并选中<动态确定端口>。

Answers:


14

是什么使我的SQL Server侦听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
    

1
这只是对我有用的一种解决方案。其他任何手册甚至都没有提到IPAII端口。谢谢男人,您决定了我的一天
QkiZ

13

为什么用52395而不是1433

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

有3种服务,即SQL Server(MyInstanceName),SQL Server代理(MyInstanceName)和SQL Server浏览器。最后两个停止

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

另外,经常使用的替代配置是为命名实例使用静态端口,并在连接字符串(tcp:<hostname>:<port>)中指定端口。它具有使SQL Server Browser摆脱困境的优势,但是它需要仔细维护客户端。更改侦听端口需要在所有客户端,所有计算机,所有位置进行有计划的更改,这通常很麻烦。我建议改为依赖SQL Server Browser。


1

防火墙-其中3个

不熟悉Windows最新版本的人(XP之后的版本我都不满意,并试图在Windows 10上安装SQL Server):

  • 您需要在3个不同的位置关闭防火墙(即3个不同的配置文件)。

如果仅对您看到的第一个域(域配置文件)执行此操作,您仍然会想知道为什么可以连接到端口80(IIS)而不是1433(SQL Server)。

在此处输入图片说明


1

我还不能发表评论(声望很低,因为它不是很活跃):但是,如上所述,禁用Windows防火墙是最糟糕的答案。正确的方法是:在“入站”中创建防火墙规则,以允许端口1433在所需的那些本地IP(或全部)上进行通信。而且我还建议设置允许哪些远程IP连接到该SQL Server。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.