首页 > 数据库 >解决无法打开到 SQL Server 的连接错误

解决无法打开到 SQL Server 的连接错误

时间:2023-07-23 12:22:51浏览次数:45  
标签:检查 IP Server 实例 SQL 连接

一、问题描述

有时,您可能会在连接到 SQL Server 时遇到问题,并且可能会收到如下消息:

 

这些错误可能是针对 命名管道连接或 TCP/IP连接。在本技巧中,我们将探讨导致这些错误的原因以及解决方法。

二、解决方案

您收到这些错误消息的原因可能有多种。请按照以下步骤查看是否可以解决该问题。

第 1 步 - 检查是否可以 ping SQL Server 框

确保您能够从客户端计算机 ping 通安装了 SQL Server 的物理服务器。

解决连接到 sql server 的问题

如果这不起作用,您可以尝试仅使用IP 地址(对于默认实例)或命名实例的IP 地址\实例名称来连接到 SQL Server。

如果可以使用 IP 地址进行连接,则可以将 SQL Server 计算机添加到主机文件中。要在主机文件中添加条目,请打开位于%SystemRoot%\system32\drivers\etc\ 中的文件,并使用记事本添加信息。

例如,假设我的服务器 SQLDBPool 使用 IP 地址 74.200.243.253,我可以将其添加到主机文件中,并使用 SQLDBPool 的计算机名称。现在我应该能够使用计算机名称而不是 IP 地址来连接到 SQL Server。

尝试使用 IP 地址连接到 sql server

步骤 2 - 检查 SQL 服务是否正在运行

确保 SQL 服务正在运行。您可以使用SC命令打开SQL Server 配置管理器来检查 SQL Server 服务。很多时候您可能会发现 SQL Server 实例没有运行。

使用 SQL Server 配置管理器

您可以使用 SQL Server 配置管理器来确保服务正在运行。如果由于某种原因您 找不到 SQL Server 配置管理器,请查看本文。

使用sql server配置管理器 SQL Server配置管理器

使用SC命令

您可以从 Windows 命令行发出以下命令来查看服务的状态。

使用 sc 命令检查 sql 服务是否正在运行

请注意,对于命名实例,您必须使用正确的实例名称编写如下命令,将instancename替换为实际的 SQL Server 实例名称。

sc 查询 mssql$instancename

步骤 3 - 检查 SQL Server Browser 服务是否正在运行

检查 SQL Server Browser 服务是否正在运行。如果您已安装 SQL Server 命名实例且未配置特定 TCP/IP 端口,则传入请求将在动态端口上侦听。要解决此问题,您需要启用并运行 SQL Server Browser 服务。您可以使用SQL Server 配置管理器(请参阅步骤 2) 或SC命令检查浏览器服务状态,如下所示。

检查sql browser服务是否正在运行

步骤 4 - 检查您使用的 SQL Server 实例名称是否正确

确保您使用正确的实例名称。当您连接到默认实例时,machinename是实例名称的最佳代表,而当您连接到命名实例(例如 sqlexpress)时,您需要按如下所示指定实例名称:machinename\instancename,其中您在 instancename 中输入 SQL Server 实例名称。

第 5 步 - 检查是否可以找到 SQL Server

检查 SQL Server 是否在网络中。您可以使用SQLCMD -L命令检索网络中安装的 SQL Server 列表。请注意,如果 SQL Server Browser 服务正在运行,这只会返回 SQL Server。

使用sqlcmd -L 检查sql server是否在网络中

步骤 6 - 检查 TCP/IP 和命名管道是否已启用

检查 TCP/IP 和命名管道协议和端口。打开 SQL Server 配置管理器并检查 SQL Server 网络配置协议。您应该启用命名管道和 TCP/IP 协议。

打开ssms并检查sql server网络配置协议

对于 TCP/IP 协议,右键单击并选择属性,也可以检查 TCP/IP 通信端口。默认端口为 1433,如果需要,可以出于安全目的更改该端口。

检查tcp/ip通讯端口

步骤 7 - 检查是否已启用允许远程连接此服务器

检查是否启用了允许此服务器的远程连接。在 SSMS 中,右键单击实例名称并选择属性。转到“连接”选项卡并确保选中“允许远程连接到此服务器” 。如果需要进行更改,则必须重新启动 SQL Server 实例才能应用更改。

在 ssms 中选择属性并转到连接选项卡

您还可以使用以下命令配置远程服务器连接。如果进行更改,则需要重新启动 SQL Server 才能生效。

下面的设置与上图中的设置等效。

exec sp_configure "远程访问", 1 -- 0 打开, 1 关闭
exec sp_configure "远程查询超时", 600 -- 秒
exec sp_configure "远程过程传输", 0 -- 0 打开, 1 关闭

步骤 8 - 检查 SQL Server 正在使用的端口号

本地连接到 SQL Server 并检查端口条目的错误日志。您可以执行 XP_READERRORLOG 过程来读取错误或通过转至管理 > SQL Server 日志并选择当前日志来使用 SSMS。滚动到错误日志中第一个条目的底部,查找类似于下面的条目,其中显示命名管道和 TCP/IP 已启用,并且用于 TCP/IP 的端口在本例中为 1433。

本地连接sql server并查看错误日志

步骤 9 - 检查防火墙是否未阻止对 SQL Server 的访问

为 SQL Server 端口和 SQL Server Browser 服务配置 Windows 防火墙。转到“控制面板”并单击“Windows 防火墙”。转到例外选项卡,如下所示。您可以阅读此技巧 “配置 Windows 防火墙以与 SQL Server 配合使用”以获取更多信息。

为sql server端口和sql browser服务配置windows防火墙

单击添加端口...并输入端口号和名称。

输入端口号和名称

单击“添加程序...”以添加 SQL Server Browser 服务。这里您需要获取浏览器服务可执行路径,通常它位于 C:\Program Files\Microsoft SQL Server\90\Shared location for SQL 2005 或类似的其他版本的 SQL Server。浏览位置并将 SQLBrowser.exe 添加到例外列表中。

添加sql浏览器服务

步骤 10 - 检查服务主体名称是否已注册

如果您能够通过物理登录到服务器来连接到 SQL Server,但无法从客户端计算机进行连接,则在查询窗口中执行以下查询来检查 SPN。

-- 运行此命令查看是否未找到 SPN 
EXEC xp_readerrorlog 0,1,"无法注册服务主体名称",Null

如果未找到 SPN,请阅读此 注册 SPN 以使用 Kerberos 进行 SQL Server 身份验证和此 如何为 SQL Server 站点数据库服务器配置 SPN,了解有关如何设置和注册 SPN 的更多详细信息。

 

标签:检查,IP,Server,实例,SQL,连接
From: https://www.cnblogs.com/lkj371/p/17574855.html

相关文章

  • mysql执行execute immediate
    实现"mysql执行executeimmediate"的步骤对于刚入行的小白来说,学会如何使用"mysql执行executeimmediate"可能会有些困惑。在本文中,我将向你展示整个实现过程的步骤,并提供每一步所需的代码和注释。步骤概述下面的表格演示了实现"mysql执行executeimmediate"的步骤概述。步......
  • mysql增加两列,并往里面添加数据
    MySQL增加两列,并往里面添加数据在MySQL数据库中,我们经常需要对表结构进行修改,例如添加新的列。本文将介绍如何使用SQL语句在MySQL中添加两列,并向这两列中添加数据。1.创建示例表首先,我们需要创建一个示例表,作为演示的基础。以下是一个简单的表结构:CREATETABLEstudents(i......
  • SQL与NoSQL数据库选型及实际业务场景探讨
    在企业系统架构设计中,选择合适的数据库类型是一项关键决策。本文将对比SQL和NoSQL数据库的特点,分析它们在数据模型、可扩展性、一致性与事务、查询复杂性与频率,以及性能与延迟等方面的优势和劣势。同时,结合轻易云数据集成平台作为实际业务场景的例子,探讨了为什么NoSQL数据库(如Mo......
  • debezium同步postgresql数据至kafka
    0实验环境全部部署于本地虚拟机debeziumdocker部署postgresql、kafka本机部署1postgresql1.1配置设置postgres密码为123仿照example,创建databasepostgres,schemeinventory,tablecustomers因为postgres用户有replication权限,所以可以直接使用修改postgresql.conf文......
  • mysql 8.0 Data Dictionary initialization failed.
    MySQL8.0数据字典初始化失败MySQL是一种常用的关系型数据库管理系统,广泛应用于各种应用程序中。然而,有时在使用MySQL时,可能会遇到一些错误和问题。其中一个常见的错误是“mysql8.0DataDictionaryinitializationfailed.”。问题描述当尝试启动MySQL服务器时,可能会收到以下......
  • mysql 5.7 数据库角色
    MySQL5.7数据库角色数据库角色是MySQL5.7中的一个重要特性,它可以用于授权和权限管理。通过使用数据库角色,我们可以将一组权限捆绑到一个角色上,并将这个角色授予多个用户或其他角色。这种方式可以简化权限管理,并提高安全性。创建数据库角色我们可以使用CREATEROLE语句来......
  • mysql 2个时间差
    如何计算MySQL中两个时间的差值作为一名经验丰富的开发者,我将会指导你如何在MySQL中计算两个时间之间的差值。下面是整个流程的步骤表格:步骤说明1连接到MySQL数据库2准备数据表3插入数据4查询时间差以下是每个步骤具体需要做的事情,以及每一条代码和其......
  • mysql 2个查询语句
    实现"mysql2个查询语句"的步骤下面是整个实现过程的步骤概述,并包含每个步骤所需的代码和注释。步骤操作代码注释1连接到MySQL数据库importmysql.connector<br>mydb=mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword......
  • mysql 1709
    实现"mysql1709"的流程为了实现"mysql1709",我们需要按照以下步骤进行操作:步骤操作1下载并安装MySQL2启动MySQL服务器3创建数据库4创建数据表5插入数据6查询数据现在让我们逐步学习每个步骤需要做什么,以及使用的代码。1.下载并安装MySQ......
  • mysql 16进制运算
    实现MySQL16进制运算作为一名经验丰富的开发者,我很乐意教你如何实现MySQL的16进制运算。在开始之前,我们先来了解一下整个流程。流程概览下面是实现MySQL16进制运算的整个流程。步骤描述1将十进制数转换为16进制数2执行16进制运算3将结果转换回十进制数......