SQL Server Management Studio 2012 зависает

Когда я нажимаю узел «Базы данных» в «Обозревателе объектов», он просто продолжает «Загрузка элементов», пока в какой-то момент он просто не зависает.

Это происходит только при подключении к удаленному серверу, а не при доступе к базе данных на моем ПК.

Это также не происходит с любым другим узлом.

У ребят из хостинговой компании с этим не возникло никаких проблем. (Но они работают под 2008 годом, и SQL-сервер там тоже)

Я переустановил весь сервер SQL и т. д., но безрезультатно.

В чем может быть проблема?


person ispiro    schedule 10.06.2012    source источник
comment
У вас есть доступ к более чем одной базе данных с этими учетными данными в хостинговой компании? (Обычно это не так.)   -  person Aaron Bertrand    schedule 10.06.2012
comment
Также вы можете определить зависания? Означает ли это, что вы просто отказались от него, или он действительно переходит в режим «Не отвечает»? Вы запускали какой-нибудь сетевой профилировщик, чтобы посмотреть, какие данные передаются за это время, пока вы ждете? Он может быть заблокирован на другом конце, или он может просто передавать данные очень медленно...   -  person Aaron Bertrand    schedule 10.06.2012


Ответы (13)


Я столкнулся с той же проблемой: при доступе к удаленному серверу с помощью обозревателя объектов SSMS зависал на неопределенный срок. В журнале системных событий Windows будет отображаться ошибка DCOM 10009 («DCOM не удалось установить связь с компьютером ИМЯ_МАШИНЫ с использованием любого из настроенных протоколов»).

Решением было очистить историю MRU и другие настройки из моего профиля. Для этого:

  1. Закройте все открытые экземпляры SSMS 2012.
  2. В Проводнике откройте «%AppData%\Microsoft\SQL Server Management Studio».
  3. Переименуйте папку «11.0» во что-нибудь другое, например «11.0.old».
  4. Откройте ССМС 2012

Вы увидите, что ваш список MRU очищен. После этого вы сможете повторно ввести свои учетные данные и использовать SSMS в обычном режиме.

Если все работает, можно удалить переименованную папку. В противном случае удалите новую созданную папку «11.0» и переименуйте исходную обратно в «11.0».

Я понятия не имею, действительно ли это список MRU вызывает эту проблему или это какие-то другие данные профиля.

Нам удалось обнаружить, что SSMS пытается установить соединение DCOM через порт 135 с SQL Server (возможно, для служб SSIS, отладки T-SQL или чего-то еще). Наш брандмауэр был настроен на блокировку порта 135. Открыв порт в брандмауэре, мы смогли использовать SSMS (отсюда причина, по которой он работал с локальными базами данных, но не с удаленными). К сожалению, открытый порт 135 является поводом для множества атак, поэтому для нас это не было практичным решением.

person Jaecen    schedule 19.09.2012
comment
Удаление папки 11.0 работало пару дней, но через неделю все вернулось к тому, как было изначально, когда Object Explorer полностью блокировался при попытке развернуть узел «Базы данных» или даже до того, как у меня появилась возможность это сделать. Это происходит с двумя отдельными экземплярами SQL-сервера, к которым я пытаюсь подключиться, которые находятся на общих веб-хостах с множеством других БД на них. Те же 2 экземпляра SQL-сервера, к которым я смог подключиться без каких-либо проблем в SSMS 2008. Я, вероятно, снова удалю папку 11.0, но это сложно сделать, потому что мне нужно снова добавить все свои настройки. - person Ben Amada; 11.11.2012
comment
Единственным постоянным решением было бы открыть порт 135 на вашем брандмауэре, но я не рекомендую этого делать. - person Jaecen; 04.12.2012
comment
Большое спасибо! После удаления папки 12.0 для SSMS 2014 все работает быстрее - person veljasije; 27.03.2015

Отключите автоматическое закрытие для всех баз данных. Работал как шарм для меня! Каждый раз, когда вы расширяете или обновляете список баз данных, сервер должен активировать базы данных, вызывающие зависание.

Просто запустите это, чтобы найти все базы данных, которые автоматически закрываются.

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

Чтобы отключить этот параметр для базы данных, щелкните правой кнопкой мыши экземпляр базы данных в проводнике объектов -> щелкните свойства -> щелкните «Параметры» на левой панели навигации в окне свойств базы данных -> измените значение свойства Auto Close на «False» в правая панель, как показано на снимке ниже:

Параметр автоматического закрытия в окне свойств базы данных в SQL Server 2008 R2

person Nuno Agapito    schedule 28.01.2014
comment
Спасибо. Если это правда — база данных должна быть разбужена, чтобы появиться в окне обозревателя объектов, — мне интересно, почему это так. Я хотел бы увидеть это и затем выбрать, какая база данных мне нужна... - person ispiro; 31.01.2014
comment
Кажется, в SSMS до 2012 года не было необходимости делать это. 2012 должен сделать что-то, что требует загрузки БД... - person Nuno Agapito; 31.01.2014
comment
Кроме того, погуглив, кажется, что автоматическое закрытие баз данных - очень плохая практика... Я переключил все свои (было около 40 баз данных), и время ожидания увеличилось с 1-2 минут до 0 секунд :) - person Nuno Agapito; 31.01.2014
comment
В точку, приятель! У меня более 1000 баз данных на каждом сервере SQL! и занимало около 40 секунд, чтобы расширить базы данных! запустил форму сценария support.managed .com/kb/a402/ и теперь он открывается за секунду! только 40 на каждом сервере были настроены на автоматическое закрытие... С уважением и большое спасибо Лиам - person Liam Wheldon; 05.12.2014
comment
Это на самом деле работает как шарм. +1. Для меня это происходило всякий раз, когда я удалял базу данных localdb из экземпляра (localdb)\v11.0. Иногда он показывает окно сообщения, показывающее сообщение Ссылка на объект не установлена ​​​​на экземпляр объекта сразу после удаления базы данных localdb. Когда появляется это всплывающее сообщение, зависает только проводник объектов, а остальная часть пользовательского интерфейса реагирует. Но иногда, когда это окно сообщения не появляется, весь пользовательский интерфейс перестает отвечать на запросы. - person RBT; 07.06.2016

Предполагая, что у вас есть доступ только к одной базе данных в хостинговой компании (что почти всегда так, по крайней мере, с определенным именем пользователя/паролем), вы можете вообще избежать необходимости использовать раскрывающийся список, установив зарегистрированный сервер по умолчанию на база данных, к которой вы должны получить доступ:

введите здесь описание изображения

(Здесь это тоже может занять больше времени, но это будет одноразово. Вы также можете ввести его вместо ожидания заполнения списка.)

Таким образом, даже если логин, созданный для вас хостом, по умолчанию направляет вас к tempdb или чему-то еще, Management Studio все равно поместит вас в контекст вашей базы данных.

Теперь я вижу, что вы говорите об узле Object Explorer, а не о раскрывающемся списке «Использовать базу данных», который я как-то неправильно истолковал. Упражнение, которое можно попробовать, состоит в том, чтобы выделить узел базы данных (не разворачивая его) и нажать F7 (детали обозревателя объектов). Если это загрузится для вас, то это может быть альтернативой навигации по иерархии, и, в качестве бонуса, вы можете показать здесь множество атрибутов сущности, а также выбрать несколько элементов, две вещи, которые вы не можете контролировать в Object Explorer.

Если это не поможет, то ваш хост должен помогать вам лучше, чем кажется. Если SSMS 2012 поддерживается, они должны иметь возможность протестировать это в SSMS 2012 и подтвердить или опровергнуть, что они могут его воспроизвести. Если он не поддерживается, я думаю, вам следует также установить SSMS 2008 (они могут сосуществовать) и использовать его для управления этим конкретным сервером.

Конечно, почти все, что вы можете делать в обозревателе объектов (и многое другое, что вы не можете), вы можете сделать с помощью представления каталога и/или DMV. Поэтому, прежде чем решить, что делать, вы можете просмотреть (или поделиться с нами), для чего именно вы используете Object Explorer — если есть способ сделать это без Object Explorer, вам может понравиться обходной путь лучше, чем иметь две версии. инструмента (поскольку улучшения в SSMS 2012 не имеют абсолютно никакого отношения к Object Explorer).

person Aaron Bertrand    schedule 10.06.2012
comment
Спасибо за подробный ответ. / Я попытался указать имя базы данных в свойствах подключения — она просто подключается к серверу, как и раньше. / Я попробовал Object Explorer Details — та же проблема. / Веб-хост не поддерживает 2012. / В настоящее время я загружаю SSMS 2008, но хотел бы избежать этого варианта, опасаясь, что он может помешать 2012 (документировано ли, что эти 2 могут сосуществовать?). / Что касается просмотра каталогов и DMV – звучит многообещающе – что они собой представляют? / И еще раз спасибо. - person ispiro; 10.06.2012
comment
Я не знаю, задокументировано ли это, но пока вы не используете Visual Studio или BIDS и т. д., я могу дать вам личную гарантию, что они не сломают друг друга (хотя я не уверен на 100%, кто победит). в настройках/настройках клавиатуры и т.д. если устанавливаешь 2008 второй - я всегда делал наоборот). Я не думаю, что использование версии 2008 года что-то изменит, но, по крайней мере, это даст вам обоснованное недовольство тем, что вы можете сломать его в версии, которую они поддерживают. Они должны иметь возможность попытаться воспроизвести за пределами своей уютной маленькой сети (где, я уверен, это сработает). - person Aaron Bertrand; 10.06.2012
comment
Что касается вашего комментария выше — после долгого времени мне пришлось использовать диспетчер задач, чтобы завершить процесс. / Что касается сетевого профилировщика — хотел бы я знать, что это такое. - person ispiro; 10.06.2012
comment
Представления каталога — это метаданные для вашей базы данных. Итак, если вам нужен список таблиц, SELECT * FROM sys.tables, процедур, SELECT * FROM sys.procedures и т. д., msdn .microsoft.com/en-us/library/ms174365.aspx / msdn.microsoft.com/en-us/library/ms189783.aspx - person Aaron Bertrand; 10.06.2012
comment
Я использую Visual Studio. И визуальный веб-разработчик. - person ispiro; 10.06.2012
comment
Тогда я не буду прилагать никаких заверений. :-) Я использовал оба в параллельном режиме только при использовании Management Studio. Если вы используете Visual Studio 2010, я слышал о параллельных проблемах, которые решаются только в том случае, если вы применяете пакет обновления 1 (SP1) для Visual Studio 2010 (или, опять же, если он уже применяется). Я бы сделал это, прежде чем снова открыть любую копию Management Studio. Если вы используете более старую версию Visual Studio, извините, но вы мне непонятны. - person Aaron Bertrand; 10.06.2012
comment
Применяется давно. Думаю попробовать этот вариант. Еще раз спасибо за вашу помощь. И используя VS2010. - person ispiro; 10.06.2012

Я провел более месяца со службой поддержки Microsoft SQL, устраняя эту проблему. Это было отправлено как ошибка.

У меня есть SQL 2012 SSMS и VS 2012, установленные на Win 7 (64).

Удаление папки профиля никогда не работало в течение разумного периода времени.

Обходной путь, который мы нашли, заключался в том, чтобы убедиться, что мой профиль SSMS по умолчанию использует базу данных Master при подключении. Похоже, это как-то связано с тем фактом, что я подключаюсь к Windows Authentication и принадлежу к нескольким группам AD, которым назначены разрешения SQL, И у меня нет конкретных разрешений SQL, настроенных для моей учетной записи AD.

person PTansey    schedule 07.11.2013

В моем случае удаление папки профиля сработало ровно один раз. В следующий раз, когда я открыл SSMS 2012, он снова завис при подключении к серверу. В SP1 это тоже не исправлено.

Так было до тех пор, пока я не нашел следующий простой обходной путь, описанный в заявка Бена Амада на сайте connect.microsoft.com: Всегда закрывайте Сведения об обозревателе объектов< /em> перед закрытием SSMS 2012.

Итак, полный обходной путь для меня таков:

  1. Следуйте ответу Джейсена, но снова закройте SSMS 2012 после создания чистой папки профиля.
  2. Примените рекомендацию Hoodlum и скопируйте SqlStudio.bin из папки старого профиля в новую (позже старую папку профиля можно удалить)
  3. Каждый раз перед закрытием SSMS 2012 убедитесь, что окно Сведения обозревателя объектов закрыто

Первые два шага требуются только один раз или если окно сведений обозревателя объектов было случайно оставлено открытым.

Изменить

Я только что заметил, что закрытие окна сведений обозревателя объектов также требуется при (повторном) подключении к серверу SQL в том же сеансе SSMS. Таким образом, в основном при подключении к серверу окна сведений обозревателя объектов должны быть закрыты.

person ecdsa    schedule 11.09.2013

Я подключаюсь к нескольким удаленным серверам с 2000 по 2012 год. SMSS на локальном ПК — это SQL Server 2012, SMSS — 11.0.2100.60.

SSMS зависает несколько раз в день. Когда это происходит, я захожу по RDP на локальный сервер/SMS/Activity Monitor и убиваю процессы с моего ПК с Database Name=master по одному, пока SMSS на моем ПК не разморозится.

Это всегда работает, однако лечение болезни, а не симптомы, было бы весьма кстати.

person Herbert Tobisch    schedule 17.10.2014

Есть несколько SQL-серверов с 2000 по 2012 год, доступ к ним через SMSS с моего рабочего стола. Проблема возникает с разной периодичностью, выглядит так: когда сворачиваю сервер в обозревателе объектов, SMSS зависает.

просматривая монитор активности на рассматриваемом сервере, я нахожу процесс в master db с хостом = мой рабочий стол, выполняющий следующий запрос

ВЫБРАТЬ dtb.name AS [Имя] ИЗ master.dbo.sysdatabases AS dtb ORDER BY [Имя] ASC SMSS

уничтожение процесса освобождает SMSS.

person Herbert Tobisch    schedule 26.01.2015

Вот что у меня сработало. Откройте SSMS, нажмите кнопку подключения к проводнику объектов в диалоговом окне подключения к серверу, разверните параметры >> нажмите «Сбросить все». Готово!

person Koko    schedule 01.10.2013

Я проверил примерно все приведенные выше ответы, но моя 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, чтобы решить свою проблему.

person SeeSharp    schedule 10.08.2016

Теперь я применил SQL 2012 Service Pack 1 (через Центр обновления Windows), и теперь он работает нормально, хотя загрузка занимает очень много времени.

person ispiro    schedule 03.12.2012

«Откройте SSMS, нажмите кнопку подключения к проводнику объектов в диалоговом окне подключения к серверу, разверните параметры >> нажмите «Сбросить все» — это работает

person user3331508    schedule 20.02.2014

Я решил эту проблему, изменив базу данных по умолчанию обратно на master.

person Tuan    schedule 25.03.2015
comment
Это сработало, потому что у любой базы данных по умолчанию, которую вы установили, было включено автоматическое закрытие? - person influent; 16.12.2016
comment
@influence Где это? - person Tuan; 17.12.2016

Перейдите к свойствам базы данных в SSMS и измените совместимость на 2012. Затем проверьте.

введите здесь описание изображения

person Kavi    schedule 27.11.2017