无法连接到远程 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 服务器 的相关文章

  • Oracle:如何获取刚刚插入的行的序列号?

    如何获取刚刚插入的行的序列号 插入 返回 declare s2 number begin insert into seqtest2 x values aaa returning seq into s2 dbms output put lin
  • 根据日期顺序排名

    我的数据如下 Heading Date A 2009 02 01 B 2009 02 03 c 2009 02 05 d 2009 02 06 e 2009 02 08 我需要如下排名 Heading Date Rank A 2009 02
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • 如何从 SQL Server 2008 查询结果中删除“NULL”

    我有一个包含 59 列和超过 17K 行的表 很多行都有NULL在某些列中 我想删除NULL以便查询返回空白 而不是NULL 我可以运行一些更新功能来替换所有NULL with 使用 SQL Server 2008R2 Management
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 是否有适用于 SQL Server Express 的 SQL Server Profiler? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有适用于 SQL Server Express 的 SQL Server Profiler 也许是开源的 或者也许只是一个可以帮助我查
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • SQL Server 连接尝试记录在哪里?

    SQL Server 是否有用于尝试连接的外部日志文件或内部表 或者此类信息是否放置在 Windows 事件日志中的某个位置 您可以启用连接日志记录 对于 SQL Server 2008 您可以启用登录审核 在 SQL Server Man
  • 我可以从 SQL Server 读取元数据来了解最后更改的行/表吗?

    我们有一个数据库hundreds的桌子 有没有某种metaSQL Server 中的数据源 我可以以编程方式查询以获取名称最后更改表和行 或者我们是否需要实施这个我们自己每个表中的字段称为上次更改日期时间 etc 就查明表最后一次修改的时间
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST
  • 是否可以引用同一个表中的不同列?

    如果博客有一个 类别 表 如下所示 CREATE TABLE categories id INTEGER PRIMARY KEY AUTO INCREMENT parent id INTEGER NOT NULL name VARCHAR

随机推荐

  • 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 通但无法连接 收到用户名