我遇到了一个奇怪的问题。我有一个 SQL Server 20008 R2 实例,最近(经过多年平稳运行)开始变慢。
我注意到的一个症状是,当从 SQL Server Management Studio 工作时,在服务器本身上并记录为sa时,我单击数据库图标附近的 + 符号,单击后出现错误,确定后我看到“+ " 消失了,你可以在这个截图中看到我在四个数据库上尝试后的样子:
我得到的错误是(意大利语):
Impossibile accedere al database MyDatabase. (ObjectExplorer)
------------------------------
Percorso programma:
in Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.DatabaseNavigableItem.get_CanGetChildren()
in Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.RequestChildren(IGetChildrenRequest request)
in Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle quitEvent)
这意味着“无法访问数据库 MyDatabase”。
正如我所说,这只是一个症状,主要问题是来自客户端的连接很慢,非常慢但可以正常工作。
我为此特定实例重新启动了 SQL Service 服务。
这是一个命名实例,我也有可以正常工作的默认实例。
谁能给我一个解决方案的指针吗?
打开一个新的查询窗口并运行
SELECT * FROM sys.databases
. 查看有问题的数据库是否列在结果中。如果是,请查看是否可以通过运行来访问它
USE MyDatabase
。如果可行,请查看是否可以通过运行来拉出表格列表SELECT * FROM sys.tables
。您可能想运行
DBCC CHECKDB MyDatabase
并查看是否检测到任何问题。我发现原因是我的电脑在解析 DNS 时出现问题,每次查询
SERVER\INSTANCE
都超时,使用 IP,端口解决了这个问题。我还没有找到 DNS 不起作用的原因,但这就是问题所在。