1

今天早上,我导航到我的网站,发现它在任何存储过程后都崩溃了:

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

我在事件查看器中注意到有人试图使用“sa”进行暴力登录攻击,所以我禁用了远程访问。

Appart from that,我不知道发生了什么。现在,无法处理任何 ASP.Net 页面,因为 SQL Server 2008 请求不起作用并且在尝试执行存储过程时总是返回 Timeout。

可能是什么原因,我应该检查和修复什么?

[编辑 3]

通过将连接字符串中的 IP 更改为 127.0.0.1 来解决。在我阻止然后解除阻止从外部 IP 访问 SQL 端口之后,一个不起眼的防火墙设置仍在阻止外部 IP。

[编辑 2]

我直接在 SQL 中进行了查询,显示的消息是:

A transport-level error has occurred when sending the request to the server.

[编辑]

类似的线程中列出了三种可能性:

1 - 某处出现了僵局。

没有为什么:

  • 所有存储过程现在都回答此错误
  • 攻击后没有更改任何代码或程序。

2 - 数据库的统计信息和/或查询计划缓存不正确

我输入了 DBCC FREEPROCCACHE,它成功地删除了缓存,没有错误。

我输入了 exec sp_updatestats,缓存重置没有改变任何东西。

3 - 查询太复杂,需要调优

与 1 相同。存储过程非常简单/基本。

4

1 回答 1

0

这个问题的其他答案(我的意思是“在其他线程中”,而不是“这里”)也应该关注基本问题:

此错误还可能意味着无法使用当前连接字符串与 SQL Server 进行通信。很基础。

就我而言,我的 Windows 防火墙没有(像往常一样)反映它的实际行为。当受到蛮力攻击时,我阻止了对防火墙中 SQL 端口的访问并重新启动(它没有改变任何东西)。然后过了一会儿,即使我删除了这条规则,SQL似乎开始拒绝访问来自局域网IP的任何IP地址。但我不再考虑防火墙中的这条规则了。无论如何,我想阻止外部访问,然后发现有一个“案例”可以签入 SQL 管理器来执行此操作。

我所做的是在连接字符串中将我的公共 IP 地址更改为 127.0.0.1

于 2012-08-17T03:47:24.847 回答