当我点击“对象资源管理器”中的“数据库”节点时,它只会保持“正在加载项目”,直到某个时刻它才会挂起。
仅在连接到远程服务器时才会发生这种情况,而不是在访问PC上的数据库时。
任何其他节点也不会发生这种情况。
网络托管公司的员工没有遇到任何麻烦。 (但他们正在运行2008,那里的SQL服务器也是如此)
我重新安装了整个SQL服务器等但无济于事。
可能是什么问题?
答案 0 :(得分:45)
我遇到了同样的问题:使用对象资源管理器访问远程服务器时,SSMS将无限期挂起。 Windows系统事件日志将显示DCOM错误10009(“DCOM无法使用任何已配置的协议与计算机MACHINE_NAME通信。”)。
解决方案是从我的个人资料中清除MRU历史记录和其他设置。要做到这一点:
您会看到您的MRU清单已被清除。然后,您应该可以重新输入凭据并正常使用SSMS。
如果一切正常,您可以删除重命名的文件夹。否则,删除已创建的新“11.0”文件夹,并将原始文件重命名为“11.0”。
我不知道它是否真的是导致此问题的MRU列表,或者是否是其他一些配置文件数据。
我们发现SSMS正在尝试通过端口135与SQL Server建立DCOM连接(可能用于SSIS,T-SQL调试或其他)。我们的防火墙被配置为阻止端口135.通过打开防火墙中的端口,我们能够使用SSMS(因此它对本地数据库起作用而不是远程数据库)。不幸的是,开放端口135是对许多攻击的邀请,因此对我们来说这不是一个实用的解决方案。
答案 1 :(得分:6)
在所有数据库上关闭自动关闭功能。对我来说就像一个魅力! 每次展开或刷新数据库列表时,服务器都必须唤醒导致挂起的数据库。
只需运行此命令即可找到所有已自动关闭的数据库
SELECT name, is_auto_close_on
FROM master.sys.databases AS dtb
WHERE is_auto_close_on = 1
ORDER BY name
的信用
关闭数据库的此设置 - 右键单击object explorer中的数据库实例 - >点击属性 - >单击数据库属性窗口左侧导航窗格中的“选项” - >在右窗格中将Auto Close属性的值更改为“False”,如下面的快照所示:
答案 2 :(得分:5)
假设您只能访问托管公司的一个数据库(几乎总是如此,至少使用某个用户名/密码),您可以通过将注册的服务器设置为只来避免使用下拉列表默认为您应该访问的数据库:
(这里也可能需要更长的时间,但这将是一次性的。你也可以输入它而不是等待列表填充。)
这样,即使主机为您创建的登录路由默认情况下您将路由到tempdb或其他东西,Management Studio仍会将您置于数据库的上下文中。
我现在看到你正在谈论的是Object Explorer节点,而不是我在某种程度上错误解释的“使用数据库”下拉列表。要尝试的练习可能是突出显示数据库节点(不要展开它),然后单击F7(对象资源管理器详细信息)。如果这为您加载,那么它可以作为导航层次结构的替代方案,作为奖励,您可以在此处显示许多实体属性,也可以在对象资源管理器中无法控制的多项选择。
如果这没有帮助,那么你的主人应该比他们看起来更好地帮助你。如果支持SSMS 2012,那么他们应该能够在SSMS 2012中对此进行测试并确认或否认他们可以重现它。如果它不受支持,那么我认为你的办法是安装SSMS 2008(它们可以共存)并用它来管理这个特定的服务器。
当然,您可以在对象资源管理器中执行任何操作(以及许多您无法做到的事情),您可以使用catalog views和/或DMVs来完成。因此,在您确定要执行的操作之前,您可能希望查看(或与我们分享)您使用对象资源管理器的确切内容 - 如果有一种方法可以在没有对象资源管理器的情况下执行此操作,您可能希望解决方法比具有两个版本更好该工具(因为2012 SSMS的改进与Object Explorer完全无关)。
答案 3 :(得分:3)
我花了一个多月时间使用Microsoft SQL支持对此进行故障排除。它已作为错误提交。
我在Win 7(64)上安装了SQL 2012 SSMS和VS 2012。
删除个人资料文件夹从未在任何合理的时间内工作。
我们找到的解决方法是确保在连接时我的SSMS配置文件默认为Master数据库。它似乎与我使用Windows身份验证连接的事实有关,我属于多个已分配SQL权限的AD组,并且我没有在我的AD帐户上设置SQL特定权限。
答案 4 :(得分:2)
在我的情况下删除个人资料文件夹只工作一次。下次我打开SSMS 2012时,它会在连接到服务器时再次冻结。 SP1也没有解决这个问题。
直到我发现ticket by Ben Amada over at connect.microsoft.com上描述的以下简单解决方法:在关闭SSMS 2012之前始终关闭对象资源管理器详细信息。
所以对我来说完整的解决方法就是:
SqlStudio.bin
从旧配置文件夹复制到新配置文件夹(之后可以删除旧配置文件夹)前两个步骤只需要一次,或者对象浏览器详细信息窗口意外打开。
修改强>
我刚刚注意到,当(重新)连接到同一SSMS会话中的SQL服务器时,也需要关闭对象资源管理器详细信息窗口。因此,基本上每当连接到服务器时,都必须关闭对象资源管理器详细信息窗口。
答案 5 :(得分:2)
我从2000年到2012年连接到几个远程服务器rangig。 本地PC上的SMSS是SQL Server 2012,SMSS是11.0.2100.60
SSMS每天冻结几次。当发生这种情况时,我会通过RDP到达 本地服务器/ SMSS /活动监视器并使用Database Name = master从我的PC终止进程,一次一个,直到我的PC上的SMSS解冻。这总是有效的,然而,这种疾病的治疗方法比症状非常受欢迎。
答案 6 :(得分:2)
从2000年到2012年有一些SQL Server, 然后从我的桌面通过SMSS访问。 问题出现频率不同,如下所示:当我在对象资源管理器中折叠服务器时,SMSS会冻结。
查看有问题的服务器上的活动监视器,我在master db中找到一个进程,host = my desktop执行以下查询
SELECT dtb.name AS [Name] FROM master.dbo.sysdatabases AS dtb ORDER BY [Name] ASC SMSS
查杀进程可以释放SMSS。
答案 7 :(得分:1)
这对我有用 打开SSMS 单击“连接到对象资源管理器”按钮 在“连接到服务器”对话框中,展开选项>> 单击全部重置 完成!
答案 8 :(得分:1)
我测试了大致上述所有答案但我的SSMS在扩展数据库列表时遇到了困难。我终于找到了问题。问题是因为我恢复了它的数据库,但最后确实正确地恢复了。然后,当我扩展数据库列表时,它就一直存在。
我运行查询
SELECT
dtb.name AS [Name]
,dtb.database_id AS [ID]
,CAST(has_dbaccess(dtb.name) AS bit) AS [IsAccessible] FROM master.sys.databases AS dtb
然后结果花了太长时间,结束时超时但是当我过滤卡住的数据库时,我得到了结果。
SELECT
dtb.name AS [Name]
,dtb.database_id AS [ID]
,CAST(has_dbaccess(dtb.name) AS bit) AS [IsAccessible] FROM
master.sys.databases AS dtb
Where name <> 'StuckDB' ORDER BY [Name] ASC
最后我决定分离StuckDB来解决我的问题。
答案 9 :(得分:0)
我现在已经应用了SQL 2012 Service Pack 1(通过Windows Update),现在看起来工作正常,但加载确实需要很长时间。
答案 10 :(得分:0)
“在连接到服务器对话框中打开SSMS单击连接到对象资源管理器按钮”展开选项&gt;&gt;单击“全部重置” - “工作正常”
答案 11 :(得分:0)
我通过将默认数据库更改回master来解决了这个问题。
答案 12 :(得分:0)