无法连接到远程 SQL 服务器

2024-02-21

我的一个客户给了我一个完全合格的服务器名称[servername].somedomain.net尝试通过 VPN 连接到其 SQL Server 实例。

所以我尝试使用他们给我的用户名和密码。没有运气。我可以 ping 通但无法连接,收到用户名和密码错误的错误消息。

因此,我登录到实际的服务器,验证我的登录是否安全并且具有权限,并且它出现在那里。Workgroup\mylogin看来workgroup\实际上是一样的somedomain.net\mylogin。因为当我尝试添加somedomain.net\mylogin,它诉诸说它已经添加了,即workgroup\mylogin.

不知道这里还要检查什么。我在 SQL Server 中给自己分配了 sysadmin 角色。我可以 ping 通服务器的 IP。

我查看了他们如何对我进行身份验证,他们将我在 SQL Server 中的用户设置为使用 Windows 身份验证。嗯,我得到的错误是,当我尝试在我的管理工作室中本地连接时尝试使用 Windows 身份验证时,它无法信任跨域。我已连接到他们的 VPN,那么问题出在哪里?

他们现在无法尝试解决该问题,我只是好奇如果可以的话,我还可以尝试自己尝试解决这个问题。


基本上,当您无法连接到 SQL Server 时,问题可能是:

  1. 网络问题,
  2. SQL Server 配置问题。
  3. 防火墙问题
  4. 客户端驱动问题
  5. 应用程序配置问题。
  6. 身份验证和登录问题。

第1步:网络问题

您也许可以在没有工作网络的情况下建立本地连接,但这是一种特殊情况。对于远程连接,需要稳定的网络。解决 SQL 连接问题的第一件事是确保我们所依赖的网络可用且稳定。请运行以下命令:

ping -a(特别对 IPv4 和 IPv6 使用 -4 和 -6) 平一 nslookup(多次键入本地和远程计算机名称和 IP 地址)

小心查看返回结果中是否存在任何不匹配的情况。如果您无法 ping 通目标计算机,则很有可能网络已损坏或目标计算机未运行。不过,目标计算机可能位于防火墙后面,而防火墙会阻止 ping 发送的数据包。默认情况下,Windows 防火墙不阻止 ping (ECHO) 数据包。网络上DNS配置的正确性对于SQL连接至关重要。错误的 DNS 条目可能会导致以后出现各种连接问题。请参阅此链接,例如“无法生成 SSPI 上下文”错误消息、中毒的 DNS。

第2步:SQL Server配置问题

您需要确保目标 SQL Server 正在运行并且正在侦听适当的协议。您可以使用 SQL Server 配置管理器 (SCM) 在服务器计算机上启用协议。 SQL Server 支持共享内存、命名管道和 TCP 协议(​​以及需要特殊硬件且很少使用的 VIA)。对于远程连接,必须启用 NP 和/或 TCP 协议。在 SCM 中启用协议后,请确保重新启动 SQL Server。

您可以打开错误日志文件来查看服务器是否成功侦听任何协议。错误日志文件的位置通常位于: %ProgramFile%Microsoft SQL Server/MSSQLxx.xxx/MSSQL/日志 如果目标 SQL 实例是命名实例,您还需要确保 SQL Browser 正在目标计算机上运行。如果您无法访问远程 SQL Server,请要求您的管理员确保所有这些都发生。

第三步:防火墙问题

SQL Server 计算机(或客户端和服务器之间的任何位置)上的防火墙可能会阻止 SQL 连接请求。隔离这是否是防火墙问题的一个简单方法是,如果可以的话,短时间关闭防火墙。长期解决方案是为 SQL Server 和 SQL Browser 设置例外。

对于 NP 协议,请确保文件共享位于防火墙例外列表中。文件共享和NP底层都使用SMB协议。 对于TCP协议,需要将SQL Server监听的TCP端口设置为异常。 对于SQL Browser,请将UDP端口1434置于例外状态。 同时,您也可以将sqlservr.exe和sqlbrowser.exe置于异常状态,但不建议这样做。我们不信任的机器之间的 IPSec 也可能会阻止某些数据包。请注意,防火墙绝不应该成为本地连接的问题。

第四步:客户端驱动问题

在此阶段,您可以使用一些工具测试连接。测试肯定需要在客户端计算机上完成。

第一次尝试: 远程登录 如果启用了 TCP,您应该能够远程登录到 SQL Server TCP 端口。否则,返回检查步骤 1-3。然后,使用 OSQL、SQLCMD 和 SQL Management Studio 测试 SQL 连接。如果您没有这些工具,请从 Microsoft 下载 SQL Express,您可以免费获得这些工具。

OSQL(随 SQL Server 2000 一起提供的)使用 MDAC。 OSQL(随 SQL Server 2005 和 2008 一起提供的)使用 SNAC ODBC。 SQLCMD(随 SQL Server 2005 和 2008 一起提供)使用 SNAC OLEDB。 SQL Management Studio(随 SQL Server 2005 和 2008 一起提供)使用 SQLClient。

可能的命令使用是: osql -E -SYour_target_machine\Your_instance 用于 Windows 身份验证 osql -Uyour_user -SYour_target_machine\Your_instance 用于 SQL 身份验证

SQLCMD 也适用于此。此外,您可以对 TCP 使用“-Stcp:Your_target_machine, Tcp_port”,对 NP 使用“-Snp:Your_target_machine\Your_instance”,对共享内存使用“-Slpc:Your_target_machine\Your_instance”。您会知道它是否对所有协议或仅对某些特定协议失败。

在此阶段,您不应再看到错误 26 和错误 40 等一般错误消息。如果您使用 NP 并且仍然看到错误 40(命名管道提供程序:无法打开到 SQL Server 的连接),请尝试以下步骤: a) 在您的服务器计算机上打开文件共享。 b) 运行“net view \your_target_machine”和“net use \your_target_machine\your_share”(您也可以尝试从 Windows 资源管理器映射网络驱动器) 如果 b) 中出现故障,则很可能存在操作系统/网络配置问题,这不是 SQL Server 特定的问题。请先在互联网上搜索解决此问题。

您可以尝试使用 Windows 身份验证和 SQL 身份验证进行连接。如果所有工具的测试都失败,则很可能步骤 1-3 未正确设置,除非失败与登录相关,否则您可以查看步骤 6。

如果您使用某些工具成功,但使用其他工具失败,则可能是驱动程序问题。您可以在我们的论坛上发布问题并向我们提供详细信息。

您还可以使用“\windows\system32\odbcad32.exe”(Windows 附带)通过为各种驱动程序添加新的 DSN 来测试连接,但这仅适用于 ODBC。

第五步:申请问题

如果您成功完成步骤 1-4,但应用程序中仍然出现失败,则应用程序中可能存在配置问题。在这里考虑几个可能的问题。 a) 您的应用程序是否与您在步骤 4 中测试的帐户在同一帐户下运行?如果没有,您可能需要尝试在步骤 4 中在该帐户下进行测试,或者如果可能的话,更改为您的应用程序的可用服务帐户。 b) 您的应用程序使用哪个 SQL 驱动程序? c) 你的连接字符串是什么?连接字符串与您的驱动程序兼容吗?请检查http://www.connectionstrings.com/ http://www.connectionstrings.com/以供参考。

第6步:身份验证和登录问题这可能是 SQL 连接问题中最困难的部分。它通常与网络、操作系统和 SQL Server 数据库的配置有关。对此没有简单的解决方案,我们必须具体情况具体分析。 sql_protocols 中已经有几篇博客讨论了一些特殊情况,您可以检查它们,看看它们是否适用于您的情况。除此之外,还需要记住以下几点: a) 如果您使用 SQL 身份验证,则必须启用混合身份验证。检查此页面以供参考http://msdn.microsoft.com/en-us/library/ms188670.aspx http://msdn.microsoft.com/en-us/library/ms188670.aspxb) 确保您的登录帐户具有登录时使用的数据库(OLEDB 中的“初始目录”)的访问权限。 c) 检查系统上的事件日志,看看是否有更多信息

参考: http://blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx http://blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx

很抱歉这面文字墙,我希望这里的内容可以帮助您解决您的问题!

Regards.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法连接到远程 SQL 服务器 的相关文章

  • 获取每件商品的最新价格

    我有一张桌子 ItemID PurchaseDate Price 001 03 17 2013 19 00 002 03 17 2013 14 00 001 03 18 2013 13 00 002 03 18 2013 15 00 001
  • 将记录与另一个表上的最新记录连接

    我正在尝试创建一个 SQL 视图 我如何从一个表中选择最新的记录 而其他记录保持原样 我需要从所有表中选择所有记录 这工作正常 但我需要仅按日期选择最新的提案 这是我遇到的问题 这是我到目前为止所拥有的 SELECT TOP 100 PER
  • 如何消除错误 3002?

    假设我在 SQL Server 2008 中有以下表定义 CREATE TABLE Person PersonId INT IDENTITY NOT NULL PRIMARY KEY Name VARCHAR 50 NOT NULL Man
  • 更改 SQL Server 中所有表的所有列的排序规则

    我导入了一个包含一些数据的数据库 以便与另一个数据库进行比较 目标数据库有排序规则Latin1 General CI AS并且源数据库有SQL Latin1 General CP1 CI AS 我确实将源数据库的排序规则更改为Latin1
  • SQL查询3个表,无法得到所需的结果

    列出所有已售出的作品以及艺术家 订购日期和发货日期 SELECT title artist order date ship date FROM items orders orderline WHERE orders order id ord
  • mssql 的 UUID 疯狂

    我的数据库条目有一个 UUID 及其值 使用 Microsoft SQL Server Management Studio 提取 CDF86F27 AFF4 2E47 BABB 2F46B079E98B 将其加载到我的 Scala 应用程序
  • SQL Server 数据归档解决方案

    我正在寻找一种解决方案来存档数据库中存在的数据 我的数据库是 SQL Server 2008 大约有 250 个表 我搜索网络并找到以下链接 http www dbazine com sql sql articles charran13 h
  • 类型与创建 CLR 存储过程不匹配

    我在程序集中有一个如下所示的方法 namespace MyNameSpace public class MyClass Microsoft SqlServer Server SqlProcedure public static void M
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • SQL Server 中不需要的日期时间舍入

    我遇到了一些看起来很奇怪的事情 SQL Server 似乎正在舍入一些DateTime当我将它们保存到时 值不合适datetime列 我怀疑我错过了一些东西 但我找不到它 我正在使用 NET 4 0 针对 SQL Server 2008 运
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • 对 SQL Server 2005 结果进行分页

    如何在 SQL Server 2005 中对结果进行分页 我在 SQL Server 2000 中尝试过 但没有可靠的方法来做到这一点 我现在想知道SQL Server 2005是否有任何内置方法 分页的意思是 例如 如果我按用户名列出用户
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 获取SQL中前2个特殊字符之间的字符

    我有数据在sql 只是要注意 SQL STudio is the IDE like data a 10 b c a 1 b c 我想获取前两个符号之间的数据 Output 10 1 这就是我的方法 SELECT CAST
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable

随机推荐

  • Travis-CI 跳过部署,尽管已标记“提交”

    我对 Travis CI 还很陌生 但我使用他们的文档找到了解决方法 然而 部署到 GitHub 版本对我来说不起作用 我的 travis yml文件看起来像这样 language java branches only master not
  • 窗口关闭时停止模式(Cocoa)

    我当前正在使用以下代码显示模式窗口 NSApplication sharedApplication runModalForWindow mainWindow 但是 当我关闭此窗口时 其他窗口仍然处于非活动状态 我如何运行stopModal使
  • 在哪里可以找到 MATLAB 的形式语法?

    我想编写一个词法分析器生成器 将 MATLAB 语言的基本子集转换为 C C 等 为了帮助我做到这一点 我想找到一个包含 MATLAB 形式语法的文档 花了一些时间调查这一点 Mathworks 似乎没有提供这一点 有谁知道我在哪里可以找到
  • 如何在 iOS 中验证美国或加拿大的邮政编码?

    我想知道有什么方法可以验证美国或加拿大的邮政编码吗 我尝试使用正则表达式 就像美国一样 BOOL validateZip NSString candidate NSString emailRegex 5 4 ABCEGHJKLMNPRSTV
  • 可以跳过幼儿园吗?

    如果我知道某个值可能会在第一次遇到垃圾收集器时幸存下来 是否有某种方法让 GHC 知道 以便它可以直接将其分配到托儿所之外的某个地方 例如 如果我用一堆较小的部件建造一个大型结构 我知道每个部件至少会持续到整个结构完成为止 In GHC 垃
  • Angular 6 材料 - 如何从 matDatepicker 获取日期和时间?

    我的 html 中有这段代码
  • 如何以编程方式设置 BIRT 报告的数据源?

    我有一个连接到我们的测试数据库的 BIRT 报告 在生产环境中 我想提供一个由容器通过 jndi 提供的数据源 如何以编程方式为给定报告设置数据源 IReportRunnable design birtEngine openReportDe
  • .NET Core 2.2 CORS 不允许请求

    我已经检查了其他几个与此有关的线程 但仍然无法弄清楚这一点 我希望允许任何来源 标头 方法等访问我的 NET Core 2 2 API public void ConfigureServices IServiceCollection ser
  • python 如何解码http响应

    我正在使用下面的代码登录并从 api 端点检索数据 但响应似乎已编码 我无法读取内容 我正在使用请求 requests 0 0 1 import requests import json import os http proxy http
  • 如何使用 Chartjs 绘制带有基于时间的 x 轴的单行彩色条

    我有一些基于时间的数据 我想要图形表示 并希望使用 Chartjs 来绘制它 数据如下所示 Time State 7am up 9am down 10 45am out 17 35 up 另外 每个 状态 都有自己的颜色 所以在使用条形图时
  • Laravel:PHPUnit 导致所有内容出现 404

    我正在尝试使用 PHPUnit 为我的 Laravel 应用程序运行一些基本的单元测试 然而 所有 HTTP 请求都会返回 404 not find HTTP 状态代码 因此我们在第一个障碍上失败了 在互联网上搜寻后 我找到了有关如何解决此
  • 在 Java 中将 JSON 响应转换为字符串?

    当我向 api 发出 API 请求时 我收到 JSON 格式的响应 当我这样做时我得到了这个System Out Println的响应 HTTP 1 1 200 OK Date Thu 04 Oct 2012 20 33 18 GMT Se
  • 无法加载可部署 .jar 中的主类

    我正在尝试构建一个可执行的 jar 并收到错误Error Could not find or load main class com company app Main 我已经重新启动了我的电脑并尝试清理这个项目 我也尝试过使用
  • 如何使用 Spring Boot 2.1 Webflux 定制 Netty?

    我想在我的 Spring Boot Webflux 项目中自定义 Netty 在我的 POM 中 我添加了 Spring Boot Webflux 和 Spring Boot Actuator 依赖项 接下来 我重写了 WebServerF
  • 为什么在大多数用户代理默认样式表中
    的字体大小比

    小?

    The default h5 and h6 章节标题 https www w3 org TR html5 rendering html sections and headingsHTML5 中的字体大小为0 83em and 0 67em

  • 如何在 Web 服务调用中输入凭据(授权对象)?

    我听从了建议此处提供 https stackoverflow com questions 14532299 how to design a soap call in matlab它就像一个魅力 现在 我正在连接到服务器并调用名为的方法获取功
  • 如何在 PL/SQL 中以编程方式设置表名称?

    我创建了以下简单的 PL SQL 存储过程示例来提出特定问题 此过程将员工姓名和 ID 号插入到名为的表中employees 这 下面解释 PROCEDURE hire employee emp id IN INTEGER name IN
  • 导航抽屉中的 SeekBar

    我想在导航抽屉中使用搜索栏 基本上我需要左右滑动来设置搜索栏 好吧 你猜对了 它会滑动导航抽屉 我想做的是在聚焦时滑动搜索栏 在未聚焦时滑动导航抽屉 我该怎么做呢 这是我设置项目时的代码 我还没有设置搜索栏 private View onC
  • 如何在 AMD/ATI GPU 上运行 TensorFlow?

    读完本教程后https www tensorflow org guide using gpu https www tensorflow org guide using gpu我用这个简单的代码检查了 GPU 会话 import numpy
  • 无法连接到远程 SQL 服务器

    我的一个客户给了我一个完全合格的服务器名称 servername somedomain net尝试通过 VPN 连接到其 SQL Server 实例 所以我尝试使用他们给我的用户名和密码 没有运气 我可以 ping 通但无法连接 收到用户名