AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 104378
Accepted
Jordan Rieger
Jordan Rieger
Asked: 2015-06-18 15:13:35 +0800 CST2015-06-18 15:13:35 +0800 CST 2015-06-18 15:13:35 +0800 CST

使用 Windows 身份验证时 SQL Server Management Studio 连接缓慢或超时

  • 772

尝试使用Windows Authentication通过 TCP 连接到 SQL Server 2012 实例时,我在 SQL Server Management Studio 2014 中遇到了极长的延迟(10~30 秒) 。连接对象资源管理器或新的空白查询窗口时会发生这种情况。连接后,运行查询会很快。当我使用 SQL Server 身份验证进行连接时,问题不会发生。

环境:

  • Windows 7,以域用户身份登录
  • 通过 IP 地址(不是主机名)的 TCP 连接
  • 服务器位于通过 VPN 连接的远程位置
  • 无加密

当我使用我的域帐户登录同事的 Windows 7 计算机,并通过同一个 VPN 连接到同一个 SQL Server 时,没有任何延迟。当同一位同事使用他自己的域帐户登录我的电脑时,他遇到了延迟。这些测试表明问题是我的 PC 独有的。此外,该问题仅在连接到此特定 SQL Server 和 VPN 时出现;我可以毫无延迟地通过 Windows 身份验证连接到本地网络上的其他 SQL Server。

我尝试过但没有成功的事情:

  • 禁用防病毒和防火墙
  • 将“%userprofile%\AppData\Roaming\Microsoft\SQL Server Management Studio”下的“12.0”文件夹重命名为“_12.0”,以强制 SSMS 重新创建我的用户设置。
  • 强制网络协议为 TCP 而不是<default>. 我也尝试过命名管道,但我的服务器没有为此设置。
  • 安装了 SSMS 2012 并尝试了它而不是 2014。
  • 禁用 IPv6
  • 在我的 etc\hosts 文件中将 crl.microsoft.com 黑洞化为 127.0.0.1。
  • 在 SSMS、Visual Studio 和 Windows 中禁用客户体验改善计划。
  • 从我的电脑上卸载了所有与 SQL Server 相关的应用程序,并在 2012 年重新安装。

TCPView 线索:

  • 使用 TCPView,我注意到当我建立一个新连接时,它的状态会立即变为 ESTABLISHED,但随后会不断尝试与 SQL Server 的一两个连接,并使用 TIME_WAIT 关闭。在我同事的计算机上,这些连接已建立且稳固。所以我很确定这是超时的来源,但是连接是什么,为什么会失败?(我的 SSMS 中没有任何插件。)

有任何想法吗?

更新:智能感知/自动完成线索(?):

我注意到,一旦我最终连接,Intellisense/Autocomplete 就不起作用了。这些是否需要与 SSMS 单独连接?我尝试禁用它们,但似乎无法解决长时间的连接延迟。

sql-server sql-server-2012
  • 5 5 个回答
  • 48310 Views

5 个回答

  • Voted
  1. Best Answer
    d-_-b
    2015-06-18T19:27:08+08:002015-06-18T19:27:08+08:00

    尝试在您和您的同事连接到服务器时使用 SQL Profiler 运行跟踪。
    选择 RPC、SQL 语句和 PreConnect - 开始/完成。
    选择 Save Results To Table 选项,然后比较 2 个表以找到瓶颈。

    或者,由于您通过 IP 连接,它可能正在执行反向 DNS 查找。如果是这样,请在您的主机文件中添加一个条目。

    • 22
  2. NikolaD
    2015-06-22T17:43:44+08:002015-06-22T17:43:44+08:00

    您应该首先检查的是您的服务器或客户端 DNS 设置

    您的 SQL Server 在连接到 Active Directory 时遇到问题并不少见。如果您尝试使用本地 Windows 帐户,我相信您不会遇到问题。服务器配置公共互联网 DNS 并不少见,当 SQL Server 连接到 DC 以检查凭据并验证它时,它将尝试顶部联系公共 DNS 而不是 AD 的 DNS 服务器。由于此信息未存储在公共 DNS 上,因此无法验证,这将导致延迟,直到它设法通过 NTLM 联系正确的 DNS 服务器或 DC

    由于您没有遇到其他 SQL Server 的问题,因此几乎可以肯定该问题与 AD 或 DC 配置无关

    从 cmd触发IPConfig.exe /all命令以检查配置的 DNS 服务器。您应该只配置 AD 的 DNS 服务器。删除所有公共 DNS 服务器,只保留 AD 的 DNS 服务器。

    • 5
  3. Dennis Gorelik
    2018-11-15T17:53:18+08:002018-11-15T17:53:18+08:00

    我C:\Windows\System32\drivers\etc\hosts通过添加这样的行来扩展文件:

    201.202.203.204     mysqlserver
    

    201.202.203.204是您的 SQL Server 的 IP 地址。

    mysqlserver- 您喜欢的任何名称(您不必在任何地方使用它)。

    这使我的服务器更快。

    感谢: d-_-b, Jordan, Rieger, felickz, RobbZ

    • 1
  4. Laszlo Mako
    2019-09-08T01:34:11+08:002019-09-08T01:34:11+08:00

    为域网络配置文件关闭 SQL 服务器上的 Windows 防火墙。

    • 启动 Powershell
    • 运行Get-NetFirewallProfile -Profile Domain以检查其当前状态
    • 如果已启用,请运行:Set-NetFirewallProfile -Profile Domain -Enabled False将其关闭。

    如果是这样,您可以稍后将其重新打开并微调您的设置。或者,如果您处于安全环境中,则可以将其关闭。

    奇怪的是,即使 Windows 防火墙阻止了通信,您仍然可以连接,但初始握手和后续请求都会非常慢。我的理论(基于没有真正的证据)是,在这些情况下,通信会回到命名管道上,这在远程 PC 之间要慢得多。

    • 1
  5. Anderson Cordeiro
    2021-04-24T08:15:48+08:002021-04-24T08:15:48+08:00

    当我们搬到数据中心时,我遇到了这个问题。IPS 变了,AD 也变了服务器。

    要解决此问题,请在 Management Studio 所在的本地计算机的主机上添加服务器条目。

    在 Windows 上的主机文件上添加条目:

    xx.xxx.xx.xxx 服务器名.域

    这做了一个反向DNS。

    • 1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve