2012-06-10 238 views
25

当我单击“对象资源管理器”中的“数据库”节点时,它只是保持“正在加载项目”,直到它刚刚挂起。SQL Server Management Studio 2012挂起

只有连接到远程服务器时才会发生这种情况,而不是在访问我的PC上的数据库时。

它也不会与任何其他节点发生。

网络托管公司的人没有任何麻烦。 (但他们正在运行2008年,那里的SQL服务器也是如此)

我重新安装了整个SQL服务器等,但无济于事。

可能是什么问题?

+0

你可以访问多个数据库,使用这些凭据,在托管公司? (通常情况并非如此。) –

+0

也可以定义“挂起”?这是否意味着你刚刚放弃了它,还是它实际上进入了“不响应”模式?您在等待期间是否运行某种网络分析器来查看在此期间传输的数据?它可能被阻塞在另一端,或者它可能只是传输数据,因此您需要... –

回答

5

假设您只能访问托管公司中的一个数据库(几乎总是这样,至少使用某个用户名/密码),您可以通过设置注册服务器来避免使用下拉列表默认为你应该访问数据库:

enter image description here

(这可能需要更长的时间在这里了,但是这将是一次性的,您也可以键入它,而不是等待名单)

这样,即使为您创建的主机登录路由到tempdb o r默认情况下,Management Studio仍然会将您置于数据库的上下文中。

我现在看到你正在谈论对象浏览器节点,而不是我以某种方式解释不正确的“使用数据库”下拉菜单。要尝试的练习可能是突出显示数据库节点(不要展开它)并单击F7(对象资源管理器详细信息)。如果这为你加载,那么它可以作为浏览层次结构的替代方案,并且作为奖励,您可以在此显示大量实体属性,也可以在对象资源管理器中进行多选,这是您无法控制的两件事情。

如果这没有帮助,那么你的主人应该帮助你比他们看起来更好。如果支持SSMS 2012,那么他们应该能够在SSMS 2012中进行测试,并确认或否认他们可以复制它。如果它不被支持,那么我认为你的追求是安装SSMS 2008(它们可以共存)并用它来管理这个特定的服务器。

当然,在对象浏览器中可以做的任何事情(以及许多你不能做的事情),你可以通过使用catalog views和/或DMVs来完成。因此,在决定要做什么之前,您可能需要查看(或与我们分享)使用对象资源管理器的确切内容 - 如果有方法在没有对象资源管理器的情况下执行此操作,则可能需要比两个版本更好的解决方法(因为2012年SSMS的改进与Object Explorer完全无关)。

+0

感谢您的详细解答。/ 我试图将数据库名称放在“连接属性”中 - 它只是像以前一样连接到服务器。 / 我试过“Object Explorer Details” - 同样的问题。 / 网络主机不支持2012. / 我目前正在下载SSMS 2008,但希望避免该选项,因为担心它可能会干扰2012(是否记录了2可以共存?)。 / 至于目录视图和DMV - 听起来有希望的 - 它们是什么? / 并再次感谢。 – ispiro

+0

我不知道,如果它的记录,但只要你不使用Visual Studio或BIDS等话,我可以给你我的个人保证,他们不会打破对方(虽然我不是100%地肯定谁赢在首选项/键盘自定义等,如果你安装2008年第二 - 我总是以相反的方式)。我不认为使用2008版本会改变任何事情,但至少会给你一个合理的抱怨,你可以在他们支持的版本中打破它。他们应该能够尝试从他们舒适的小网络(我确信它可以工作)的* outside *之外重现。 –

+0

至于你的评论以上 - 很长一段时间后,我不得不使用“任务管理器”来结束这个过程。 /至于“网络分析器” - 希望我知道那是什么。 – ispiro

44

我遇到了同样的问题:使用Object Explorer访问远程服务器时,SSMS会无限期挂起。 Windows系统事件日志将显示DCOM错误10009(“DCOM无法使用任何已配置的协议与计算机MACHINE_NAME通信”)。

解决方案是从我的配置文件中清除MRU历史和其他设置。要做到这一点:

  1. 关闭SSMS 2012
  2. 在资源管理器中的任何打开的情况下,打开 “%APPDATA%\微软\ SQL Server Management Studio中”
  3. 重命名 “11.0” 文件夹到别的东西,像 “11.0.old”
  4. 打开SSMS 2012

你会发现你的MRU列表已被清除。然后,您应该能够重新输入您的凭据并正常使用SSMS。

如果一切正常,您可以删除重命名的文件夹。否则,请删除已创建的新“11.0”文件夹,并将原始文件夹重命名为“11.0”。

我不知道它实际上是MRU列表是否导致此问题,或者它是否是其他一些配置文件数据。

我们能够发现SSMS试图通过端口135与SQL Server建立DCOM连接(可能用于SSIS,T-SQL调试或其他)。我们的防火墙被配置为阻止端口135.通过打开防火墙中的端口,我们能够使用SSMS(因此它对本地数据库有效,但不是远程数据库)。不幸的是,一个开放端口135是一个很多攻击的邀请,所以这对我们来说不是一个实际的解决方案。

+1

删除11。0文件夹工作了几天,但是一周后又回到了最初的对象资源管理器在尝试展开数据库节点时甚至在我有机会这样做之前完全锁定了。它发生在我尝试连接到的2个独立的SQL服务器实例上,这些实例在共享的Web主机上,并且其上有许多其他数据库。我能够在SSMS 2008中没有任何问题的情况下连接到相同的2个SQL服务器实例。我可能会再次删除11.0文件夹,但是很难做到,因为我需要重新添加所有设置。 –

+0

唯一的永久解决方案将在防火墙上打开端口135,但我不建议这样做。 – Jaecen

+0

正在删除为我工作的文件夹。谢谢! – jkruer01

0

我现在已经应用了SQL 2012 Service Pack 1(通过Windows更新),现在看起来工作正常,但加载需要很长时间。

2

在我的情况下,删除配置文件文件夹只能工作一次。下次打开SSMS 2012时,它会在连接到服务器时再次冻结。 SP1也没有解决这个问题。

这是直到我发现了一个ticket by Ben Amada over at connect.microsoft.com描述的以下简单的解决方法:

    关闭SSMS 2012

    所以对我来说完全解决方法是此之前,请务必关闭对象资源管理器详细

  1. 按照Jaecen的答案,但接近SSMS 2012后再次它创造了一个干净的配置文件夹
  2. 应用流氓的建议,并复制SqlStudio.bin从旧的配置文件夹到新的关闭SSMS 2012确保对象资源管理器详细窗口关闭

前两个前(旧的配置文件夹可以事后删除)

  • 每次步骤只需要一次,或者如果“对象浏览器详细信息”窗口被意外打开。

    编辑

    我只注意到关闭对象资源管理器详细信息窗口时(重新)连接在同一个SSMS会话的SQL服务器也是必需的。所以基本上每当连接到服务器时,对象浏览器细节窗口都必须关闭。

  • 1

    这里是我工作的连接 打开SSMS 单击连接到服务器对话框中展开选项对象资源管理器按钮 >> 点击重置所有 完成!

    3

    我花了一个多月时间与Microsoft SQL支持解决此问题。它已被提交为一个错误。

    我同时在Win 7(64)上安装了SQL 2012 SSMS和VS 2012。

    删除配置文件夹从来没有工作过任何合理的时间长度。

    我们发现的解决方法是确保我的SSMS配置文件在连接时默认为Master数据库。这似乎与我与Windows身份验证连接的事实有关,并且我属于多个具有SQL权限分配的AD组,并且我没有在我的AD帐户上设置SQL特定权限。

    6

    在所有数据库上关闭自动关闭。像我的魅力一样工作! 每次展开或刷新数据库列表时,服务器都必须唤醒导致挂起的数据库。

    只要运行这个命令可以找到所有具有自动关闭功能的上

    SELECT name, is_auto_close_on 
    FROM master.sys.databases AS dtb 
    WHERE is_auto_close_on = 1 
    ORDER BY name 
    

    http://social.msdn.microsoft.com/Forums/sqlserver/en-US/99bbcb47-d4b5-4ec0-9e91-b1a23a655844/ssms-2012-extremely-slow-expanding-databases?forum=sqltools

    数据库要关闭此设置为一个数据库 - 右键单击​​数据库实例在对象资源管理器 - >单击属性 - >单击数据库属性窗口中左侧导航窗格中的“选项” - >在右侧窗格中将自动关闭属性的值更改为“False”,如下面的快照所示:

    Auto close option in database properties window in SQL Server 2008 R2

    +1

    谢谢。如果这是真的 - 数据库必须被唤醒出现在对象浏览器窗口中 - 我想知道_why_就是这样。我希望看到它,然后_then_选择我需要的数据库... – ispiro

    +0

    似乎2012年之前的SSMS没有必要这样做。 2012年必须做的事情,需要加载数据库... –

    +0

    此外,谷歌搜索它似乎有自动关闭数据库是一个非常糟糕的做法...我切换所有我的(有40个数据库)和等待时间从1-2分钟变为0秒:) –

    0

    “打开SSMS上单击连接中的对象连接到服务器对话框中展开选项Explorer按钮>>点击全部重设” - 它的工作原理

    2

    我连接到多个远程服务器rangig从2000年到2012年 本地PC上的SMSS是SQL Server 2012,SMSS是11.0.2100.60

    SSMS每天冻结几次。当发生这种情况时,我通过RDP去 本地服务器/ SMSS/Activity Monitor并终止我的PC上的进程与数据库名称= master,一次一个,直到我的PC上的SMSS解冻。

    然而,这总是奏效,但治疗疾病比症状更受欢迎。

    2

    从2000到2012有一些SQL Server, 然后通过我的桌面上的SMSS进行访问。 问题发生频率变化,看起来像这样:当我在对象资源管理器中折叠服务器时,SMSS会冻结。

    寻找在活动监视器有问题的服务器上,我找到主人的过程分贝主机=我的桌面上执行以下查询

    选择dtb.name [名称] FROM AS master.dbo.sysdatabases中DTB ORDER BY [Name] ASC SMSS

    查杀SMSS。

    0

    我改变我的默认数据库恢复到主解决了这个问题。

    +0

    因为无论您设置了哪个默认数据库都具有自动关闭功能,这是否奏效? – influent

    +0

    @influent那是哪里? – Tuan

    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来解决我的问题。

    0

    转到在SSMS数据库性能和兼容性变更至2012年然后检查。

    enter image description here

    相关问题