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 / 问题 / 16587
Accepted
Shane Wealti
Shane Wealti
Asked: 2012-04-17 11:45:46 +0800 CST2012-04-17 11:45:46 +0800 CST 2012-04-17 11:45:46 +0800 CST

如何解决与 SQL Server 的连接丢失问题

  • 772

我有一个应用程序,它与它需要运行的 SQL Server 实例之间的连接间歇性中断。解决此类问题的好方法是什么。如果 SQL 服务器故意断开连接,是否有某种日志记录某些内容。

我知道应用程序和数据库之间的任何事情都可能导致连接丢失。我不认为这是客户端和服务器之间的网络连接问题,因为该应用程序是通过 Citrix XenApp 提供服务的,并且在同一主机上运行的所有其他实例在我看到的那个时间点或附近都没有问题问题。

如果重要的话,这是 SQL Server 2005 - 企业版。我的应用程序是一个基于 Visual FoxPro 的应用程序,通过 Citrix XenApp 提供给客户端机器。这个问题很少见,而且是间歇性的(每天 1-2 次,超过数百个客户)。

此外,SQL Server 和 Citrix 在虚拟化服务器基础架构上运行。

TL;DR:如何解决间歇性数据库连接丢失问题?

更新:这是问题发生时应用程序错误日志中的消息:

Connectivity error: [Microsoft][ODBC SQL Server Driver]Communication link failure

我之前唯一一次看到该消息是在 SQL Server 完全过载以及实际网络连接本身出现问题(断开连接)时。在这种情况下,我认为这两件事都不是这种情况。

sql-server
  • 3 3 个回答
  • 50094 Views

3 个回答

  • Voted
  1. Best Answer
    Peter Schofield
    2012-04-17T13:33:20+08:002012-04-17T13:33:20+08:00

    一定要查看 NT 和 SQL 日志……如果您在 SQL Server 2008 或更高版本上运行,请检查环形缓冲区 DMV 以获取一些额外的线索。您是否有任何可以提高采样率的监控工具,以证明问题可能与 Citrix Xenapp 交付有关?

    环形缓冲区: 链接

    Kendra Little 就查询超时故障排除做了一个很好的介绍视频,与连接超时不太一样。 http://www.brentozar.com/archive/2011/07/mystery-of-query-timeouts-video/

    • 7
  2. StanleyJohns
    2012-04-17T20:25:04+08:002012-04-17T20:25:04+08:00

    我相信当应用程序失去与数据库的连接时,SQL 服务器不会写入错误日志。sys.dm_exec_sessions DMV是一个很好的起点。

    当您看到这些超时时,您是否有虚拟机的快照?请记住,超时是在应用程序级别设置的,并不是 SQL Server 放弃了。

    运行配置文件跟踪并捕获超时事件和死锁图事件。

    • 4
  3. sqL_handLe
    2022-07-20T15:42:08+08:002022-07-20T15:42:08+08:00

    现在是 2022 年,但我仍然会为 2012 年提出的这个问题添加一个答案,因为它今天出现在列表中 :-)

    Windows“内存压力检测”功能可能是一个真正的难题,尤其是对于 SQL Server 客户端-服务器应用程序。它可能会导致初始连接的间歇性失败,并且可能导致现有的已建立连接被破坏。而且它不必在任何地方记录其操作。我实际上从未见过指示 MPP 采取的操作的日志条目。而且 afaik 没有办法查看给定系统以知道它在 MPP 干预连接和连接的“区域内”。

    TCP 堆栈的新内存压力保护功能说明

    根据运行 SQL Server 的给定虚拟机/服务器的安全位置,MPP 可能能够完全禁用。这就是我尽可能推荐的。配置文件和豁免也可以配置。全局禁用 MPP 是一种动态更改。如果对配置文件或豁免进行了更改,我希望更新仅在重新启动服务或至少在创建新连接端口/套接字的 TCP 侦听器进程后才能运行。

    • 0

相关问题

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

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

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

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

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

Sidebar

Stats

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

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • 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
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +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
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +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