12

Azureで新しいSQL Serverデータベースを作成し、Azureポータルのリンクを使用してVisual Studio 2015で開きました。ファイアウォールにIPを追加する必要がありましたが、それ以外の場合はスムーズに処理できませんでした。Visual StudioのSQL Serverオブジェクトエクスプローラが遅いのはなぜですか?

ただし、SQL Serverオブジェクトエクスプローラを介してデータベースサーバーとやりとりをしようとすると、痛いほど遅くなります。データベース内の任意のフォルダ(たとえば、Tablesフォルダ)を展開すると、10〜30秒かかります。データベースはまったく新しいものなので、Azureが新しいDBをインスタンス化するときにAzureが作成したものだけです。

これは私が作成してVisual Studioで表示しようとした2番目のAzure DBで、どちらも同じ問題があります。最初のものではセットアップ中に何か間違ったことがあったかもしれないと思っていましたが、今度は本ですべてを確実にするようにしました。

Visual Studio内でDBに対して実際のクエリを実行すると(DBを右クリックして、New Query ...select * from INFORMATION_SCHEMA.TABLES;)、Azureとの接続に問題はないようです。

なぜそれほど痛いほど遅いですか?それをより速くするために私は何ができますか?

Windows 10(完全にパッチ適用済み)でVisual Studio 2015 Update 1(14.0.24720.00)を使用していますが、データベースの作成中に最新のバージョンを使用するためにチェックボックスをオンにしました。

+1

PMとしてSQLデータツールチームで動作しますが、テーブルのリストについては、フェッチされますプロパティのリストがちょうどテーブル名以上のものです。つまり、すべての列とそのデータ型、すべてのインデックス、その定義、制約などを取得する可能性があります。すべての情報を表示する場合は、トレースを実行してトレースできるインスタンスに接続します。インターネット上を流れるトラフィックのすべてを想像してみましょう。 TL; DR - インターネット上でGUIを使用するのが遅い。 –

+0

Visual Studioのエクスプローラは、すべての情報を取得しているようには見えません。例えば ​​'Tables'フォルダを展開すると、それぞれのテーブルを別々に展開する必要があります。展開したら、 'columns'サブフォルダも展開する必要があります。これは、すべてのテーブルデータが送信されていないことを意味します。また、新しいデータベースでは、データベース全体を2〜2台(100MBのインターネット)でローカルマシンに転送できます。再:ローカルでテストする、私はAzureを使用しているので、MS SQL Serverをローカルで実行する方法を学ぶ必要はありません。 ;) –

+1

その後の列の展開(たとえば)に時間がかかりますか、それとも速いのですか?また、集約されたデータは少量である可能性がありますが、チャットプロトコルの場合は、多くの往復をしています。 –

答えて

9

Visual StudioのSQL Server Object Explorer(SSDT)は、初めてデータベースに接続するときにデータベース全体のスキーマモデルを構築します。これはモデルベースのデータベース開発のコンセプトであり、ライブデータベースなどを変更することなく、データベースに対してスクリプトを検証するなどの利点を提供します。Azure SQL DBでは、リソースがデータベースの価格設定層で制限されている場合、データベースモデルを取得する方法は異なります。私たちのパフォーマンステストに基づいて、S1/S2を上回る価格設定層は、ローカルまたはプレミアムSQLインスタンスと同様の対話性を提供します。

さらに詳細には、現在のSSDTのメカニズムは、SQLサーバー/データベースでのラウンドトリップ操作の回数を最小限に抑えるために最小限のクエリ数を合成することであり、クエリ実行時間が長くなります。クエリが実行されている間、SQL Serverオブジェクトエクスプローラの対話性に影響します。

SSDTチームは、モデルベースのデータベース開発の利点を維持しながら、より高速な対話エクスペリエンスを提供するために、Azure SQLDBの設計を改訂しています。

開示:私は純粋に投機的

+6

"' ...初めてデータベースに接続すると... ''初期の負荷だけでなく、すべてのやりとりに遅れが生じています。モデルはキャッシュされず、代わりにDBと対話するたびに更新されますか? –

+0

より正確には、モデルはVSセッションごとに構築されます。 VSを終了して再起動すると、ライブ接続でプロセスが再び開始されます。モデルがプロジェクトから構築されている場合は、保存されたキャッシュがあります。ライブ接続とプロジェクトの違いですモデルが構築されると、相互作用がより速くなります。 –

+2

データベーススキーマのブラウジングとシンプルなスキーマ発見のために、VSのSSMSやサーバーエクスプローラーのようなツールは、相互のやり取りに基づいてスキーマ情報の一部をフェッチして、忙しいうちに速くなります。 –

関連する問題