简体   繁体   中英

SQL Server Management Studio 2012 hangs

When I click on the "Databases" node in "Object Explorer" it just keeps on "Loading items" until at some point it just hangs.

This happens only when connecting to a remote server, not when accessing a database on my PC.

It also doesn't happen with any other node.

The guys at the web-hosting company didn't have any trouble with it. (But they're running 2008, and so is the SQL server there)

I reinstalled the whole SQL server etc. but to no avail.

What might be the problem?

I experienced this same problem: when accessing a remote server with the Object Explorer, SSMS would hang indefinitely. The Windows System Event Log would show DCOM error 10009 ("DCOM was unable to communicate with the computer MACHINE_NAME using any of the configured protocols.").

The solution was to clear the MRU history and other settings from my profile. To do that:

  1. Close any open instances of SSMS 2012
  2. In Explorer, open "%AppData%\\Microsoft\\SQL Server Management Studio"
  3. Rename the "11.0" folder to something else, like "11.0.old"
  4. Open SSMS 2012

You'll see that your MRU list has been cleared. You should then be able to re-enter your credentials and use SSMS as normal.

If everything works, you can delete the renamed folder. Otherwise, delete the new "11.0" folder that was created and rename the original one back to "11.0".

I have no idea whether it's actually the MRU list that's causing this problem or if it's some other profile data.

We were able to discover that SSMS is trying to make a DCOM connection over port 135 to the SQL Server (perhaps for SSIS, T-SQL Debugging, or something else). Our firewall was configured to block port 135. By opening the port in the firewall we were able to use SSMS (hence the reason it worked against local databases but not remote ones). Unfortunately, an open port 135 is an invitation for a lot of attacks, so that wasn't a practical solution for us.

Turn Auto-Close off on all the databases. Worked like a charm to me! Every time you expand or refresh the database list, server has to awake the databases causing the hang.

Just run this to find all the databases that have auto-close on

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

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

To turn-off this setting for a database - Right click on database instance in object explorer -> Click properties -> Click "Options" in left navigation pane in database properties window -> Change the value of Auto Close property to "False" in right pane as shown in the snapshot below:

SQL Server 2008 R2中的数据库属性窗口中的自动关闭选项

Assuming you have access to only one database at the hosting company (which is almost always the case, at least with a certain username/password), you can avoid the need to use the dropdown at all by setting your registered server to default to the database you're supposed to access:

在此输入图像描述

(It may take longer here, too, but this will be one-time. You can also type it instead of waiting for the list to populate.)

This way, even if the login the host created for you routes you to tempdb or something by default, Management Studio will still put you in the context of your database.

I see now that you are talking about the Object Explorer node, not the "Use database" dropdown that I somehow interpreted incorrectly. An exercise to try might be to highlight the databases node (don't expand it) and click on F7 (Object Explorer Details). If this loads for you then it can be an alternative to navigate through the hierarchy and, as a bonus, you can show lots of entity attributes here and also multi-select, two things you have no control over in Object Explorer.

If that doesn't help, then your host should be helping you better than they appear to be. If SSMS 2012 is supported then they should be able to test this in SSMS 2012 and confirm or deny that they can reproduce it. If it is not supported then I think your recourse is to install SSMS 2008 as well (they can co-exist) and use it for managing this specific server.

Of course, just about anything that you can do in Object Explorer (and plenty of things you can't), you can do by using the catalog views and/or DMVs . So before you determine what to do, you may want to review (or share with us) exactly what you are using Object Explorer for - if there is a way to do it without Object Explorer, you might like the workaround better than having two versions of the tool (since the improvements in 2012 SSMS have absolutely nothing to do with Object Explorer).

I spent over a month with Microsoft SQL Support troubleshooting this. It has been submitted as a bug.

I have both SQL 2012 SSMS and VS 2012 installed on Win 7 (64).

Deleting the profile folder never worked for any reasonable length of time.

The workaround we found was to ensure that my SSMS profile defaulted to the Master database when connecting. It appeared to have something to do with the fact that I'm connecting with Windows Authentication and I belong to more than one AD group that have SQL permissions assigned AND I don't have SQL specific permissions set up on my AD account.

In my case deleting the profile folder worked exactly once. The next time I opened SSMS 2012 it would freeze again when connecting to a server. SP1 didn't fix this either.

That was until I found the following simple workaround described on a ticket by Ben Amada over at connect.microsoft.com : Always close the Object Explorer Details before closing SSMS 2012.

So the complete workaround for me is this:

  1. Follow Jaecen's answer, but close SSMS 2012 again after it created a clean profile folder
  2. Apply Hoodlum's recommendation and copy SqlStudio.bin from the old profile folder to the new one (the old profile folder can be deleted afterwards)
  3. Everytime before closing SSMS 2012 make sure the Object Explorer Details window is closed

The first two steps are required only once, or if the Object Explorer Details window was left open accidentally.

Edit

I just noticed that closing the Object Explorer Details window is also required when (re-)connecting to an SQL server in the same SSMS session. So basically whenever connecting to a server the Object Explorer Details windows has to be closed.

I am connecting to several remote servers rangig from 2000 to 2012. SMSS on local PC is SQL Server 2012,SMSS is 11.0.2100.60

SSMS freezes several times a day.When this occurs, I go via RDP to the local server / SMSS / Activity Monitor and kill the processes from my PC with Database Name = master, one at a time, until SMSS on my PC unfreezes.

This always works, however, a cure for the disease raher than the symptoms would be highly welcome.

Have some SQL Servers from 2000 to 2012, access then through SMSS from my desktop. Problem occurs with varying frequency, looks like this: when I collapse a server in object explorer, SMSS freezes.

looking in activity monitor on the server in question, i find a process in master db with host = my desktop executing the following query

SELECT dtb.name AS [Name] FROM master.dbo.sysdatabases AS dtb ORDER BY [Name] ASC SMSS

killing the process frees SMSS.

这是什么对我有用Open SSMS点击连接到对象浏览器按钮在连接到服务器对话框展开选项>>单击重置所有完成!

I've test approximately all above answers but my SSMS got stuck in expanding the database list. I found the problem finally. The problem was because of a database that I restored it but It did restore correctly at the end. Then When I expanded the database list it was sticking.

I run a the query

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 

Then the result took too long and at the end timed out but When I filter the stuck database I got result.

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 

At the end I decided to detach StuckDB to solve my problem.

我现在已经应用了SQL 2012 Service Pack 1(通过Windows Update),它现在似乎工作正常,但它需要很长时间才能加载。

“在连接到服务器对话框中打开SSMS单击连接到对象资源管理器按钮,展开选项>>单击重置所有” - 它可以工作

我通过将默认数据库更改回master来解决了这个问题。

Go to database properties at SSMS and change compatibility to 2012. Then check.

在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM