29

「オブジェクト エクスプローラー」の「データベース」ノードをクリックすると、ある時点でハングするまで「アイテムの読み込み」が続きます。

これは、PC 上のデータベースにアクセスするときではなく、リモート サーバーに接続するときにのみ発生します。

また、他のノードでは発生しません。

ウェブホスティング会社の人たちは、それで何の問題もありませんでした. (しかし、彼らは 2008 年を実行しており、SQL サーバーもそこにあります)

SQLサーバー全体などを再インストールしましたが、役に立ちませんでした。

何が問題なのですか?

4

13 に答える 13

45

これと同じ問題が発生しました。オブジェクト エクスプローラーを使用してリモート サーバーにアクセスすると、SSMS が無期限にハングします。Windows システム イベント ログには、DCOM エラー 10009 (「DCOM は、構成されたプロトコルを使用してコンピューター MACHINE_NAME と通信できませんでした。」) が表示されます。

解決策は、プロファイルから MRU 履歴とその他の設定をクリアすることでした。それを行うには:

  1. SSMS 2012 の開いているインスタンスをすべて閉じます。
  2. エクスプローラーで、「%AppData%\Microsoft\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 を開くことは多くの攻撃の誘因となるため、これは私たちにとって実用的な解決策ではありませんでした。

于 2012-09-19T20:30:38.220 に答える
6

すべてのデータベースで Auto-Close をオフにします。私にとって魅力のように働きました!データベース リストを展開または更新するたびに、サーバーはハングの原因となっているデータベースを起動する必要があります。

これを実行するだけで、自動クローズがオンになっているすべてのデータベースを見つけることができます

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] に変更以下のスナップショットに示すように、右側のペイン:

SQL Server 2008 R2 のデータベース プロパティ ウィンドウの自動終了オプション

于 2014-01-28T22:38:58.100 に答える
5

ホスティング会社のデータベースにアクセスできるのは1つだけであると仮定すると(少なくとも特定のユーザー名/パスワードでは、ほとんどの場合そうです)、登録済みサーバーをデフォルトに設定することで、ドロップダウンを使用する必要がまったくなくなります。アクセスすることになっているデータベース:

ここに画像の説明を入力してください

(ここでも時間がかかる場合がありますが、これは1回限りです。リストが入力されるのを待つ代わりに、入力することもできます。)

このように、ホストが作成したログインによってデフォルトでtempdbなどにルーティングされた場合でも、ManagementStudioはデータベースのコンテキストにユーザーを配置します。

どういうわけか間違って解釈した「データベースを使用」ドロップダウンではなく、オブジェクトエクスプローラーノードについて話していることがわかりました。データベースノードを強調表示して(展開しないでください)、F7(オブジェクトエクスプローラーの詳細)をクリックしてみてください。これがロードされた場合は、階層をナビゲートする代わりになります。ボーナスとして、ここに多くのエンティティ属性を表示したり、オブジェクトエクスプローラーで制御できない2つの項目を複数選択したりできます。

それでも問題が解決しない場合は、ホストが見た目よりもうまく支援してくれるはずです。SSMS 2012がサポートされている場合は、SSMS 2012でこれをテストし、再現できることを確認または拒否できる必要があります。サポートされていない場合は、SSMS 2008もインストールして(共存可能)、この特定のサーバーの管理に使用することをお勧めします。

もちろん、オブジェクトエクスプローラーで実行できること(および実行できないことの多く)は、カタログビューDMVを使用して実行できます。したがって、何をすべきかを決定する前に、Object Explorerを使用している目的を正確に確認(または共有)することをお勧めします-Object Explorerなしでそれを行う方法がある場合は、2つのバージョンを使用するよりも回避策の方がよいでしょう。ツールの機能(2012 SSMSの改善は、オブジェクトエクスプローラーとはまったく関係がないため)。

于 2012-06-10T18:06:23.317 に答える
4

これをトラブルシューティングするために Microsoft SQL サポートに 1 か月以上費やしました。これはバグとして提出されました。

Win 7 (64) に SQL 2012 SSMS と VS 2012 の両方がインストールされています。

プロファイル フォルダを削除しても、妥当な期間は機能しませんでした。

私たちが見つけた回避策は、接続時に SSMS プロファイルがデフォルトで Master データベースになるようにすることでした。Windows認証に接続しており、SQL権限が割り当てられている複数のADグループに属しており、ADアカウントにSQL固有の権限が設定されていないという事実と関係があるようです。

于 2013-11-07T16:47:27.507 に答える
2

2000 年から 2012 年までの複数のリモート サーバーに接続しています。ローカル PC の SMSS は SQL Server 2012 で、SMSS は 11.0.2100.60 です。

SSMS は 1 日に数回フリーズします。これが発生すると、RDP 経由でローカル サーバー / SMSS / アクティビティ モニターにアクセスし、PC の SMSS がフリーズするまで、データベース名 = master の PC からプロセスを一度に 1 つずつ強制終了します。

これは常に機能しますが、症状よりもむしろ病気の治療法が大いに歓迎されます.

于 2014-10-17T12:33:42.100 に答える
2

2000 年から 2012 年までのいくつかの SQL Server があり、デスクトップから SMSS を介してアクセスします。問題はさまざまな頻度で発生します。次のようになります。オブジェクト エクスプローラーでサーバーを折りたたむと、SMSS がフリーズします。

問題のサーバーのアクティビティモニターを見ると、master db に host = my desktop で次のクエリを実行しているプロセスが見つかります

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

プロセスを強制終了すると、SMSS が解放されます。

于 2015-01-26T17:10:17.397 に答える
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 をデタッチすることにしました。

于 2016-08-10T08:27:03.960 に答える
1

これが私にとってうまくいったことです。SSMSを開き、サーバーへの接続ダイアログボックスのオブジェクトエクスプローラーへの接続ボタンをクリックします。オプションを展開します>>すべてリセットをクリックします完了!

于 2013-10-01T07:01:53.550 に答える
0

「SSMSを開き、サーバーへの接続ダイアログボックスのオブジェクトエクスプローラーへの接続ボタンをクリックしてオプションを展開します>>すべてリセットをクリックします」-動作します

于 2014-02-20T06:57:10.457 に答える
0

SQL 2012 Service Pack 1 を (Windows Update 経由で) 適用したところ、正常に動作しているように見えますが、読み込みに非常に長い時間がかかります。

于 2012-12-03T17:05:58.257 に答える