12

Ho appena creato un nuovo database SQL Server in Azure e l'ho aperto in Visual Studio 2015 utilizzando il collegamento nel portale di Azure. Ho dovuto aggiungere il mio IP al firewall, ma altrimenti il ​​processo è andato liscio.Perché SQL Server Object Explorer in Visual Studio è lento?

Tuttavia, quando sto cercando di interagire con il server di database tramite l'Esplora oggetti di SQL Server è dolorosamente lento. Espandere una qualsiasi delle cartelle nel mio database (ad esempio, la cartella Tables) richiede da 10 a 30 secondi. Il database è nuovo di zecca, quindi l'unica cosa che ha è quella che crea Azure quando crea un'istanza di un nuovo DB.

Questo è il secondo database di Azure che ho creato e ho provato a visualizzare in Visual Studio e hanno entrambi lo stesso problema. Con il primo ho pensato che forse ho fatto qualcosa di sbagliato durante l'installazione, ma questa volta mi sono assicurato di fare tutto dal libro.

L'esecuzione di query effettive sul DB da Visual Studio (fare clic con il pulsante destro del DB, New Query ..., select * from INFORMATION_SCHEMA.TABLES;) è molto veloce, quindi non sembra essere un problema con la mia connessione ad Azure.

Perché è così dolorosamente lento? Cosa posso fare per renderlo più veloce?

Sto utilizzando Visual Studio 2015 Update 1 (14.0.24720.00) su Windows 10 (completamente aggiornato) e durante la creazione del database ho selezionato la casella per utilizzare la versione più recente.

+1

puramente speculativo, ma l'elenco delle proprietà che ottiene inverosimile per l'elenco di tabella è più che solo i nomi delle tabelle. Cioè, probabilmente tira tutte le colonne e i loro tipi di dati, tutti gli indici con le loro definizioni, i vincoli, ecc. Se vuoi vedere tutto ciò che accade, connettiti a un'istanza su cui puoi eseguire una traccia e tracciarla . Ora immagina tutto il traffico che attraversa internet. TL; DR - L'uso di una GUI su Internet è lento. –

+0

L'esploratore in Visual Studio non sembra afferrare tutte le informazioni. Se espongo la cartella 'Tabelle', ad esempio, devo espandere ciascuna tabella separatamente. Una volta espanso, devo anche espandere la sottocartella 'columns'. Ciò implica che tutti i dati della tabella non vengono trasmessi. Inoltre, con un database nuovo di zecca, l'intero database potrebbe essere trasferito sulla mia macchina locale in un secondo o due (internet a 100Mit). Ri: test localmente, sto usando Azure quindi non devo imparare come eseguire MS SQL Server localmente. ;) –

+1

La successiva espansione delle colonne (ad esempio) richiede molto tempo o è veloce? Inoltre, anche se può essere una piccola quantità di dati in aggregato, se si tratta di un protocollo di chat, sta facendo molti round trip. –

risposta

9

SQL Server Object Explorer (SSDT) ​​in Visual Studio crea un modello di schema dell'intero database quando si collega un database per la prima volta. Questo è un concetto di sviluppo di database basato su modelli che fornisce vantaggi come la convalida di script contro il database senza la necessità di modificare il database attivo ecc. Quando si tratta di DB SQL di Azure in cui la risorsa è limitata con il livello di prezzo del database, le prestazioni dell'esecuzione di query recuperare il modello di database può variare. In base ai nostri test delle prestazioni, i livelli di prezzo superiori a S1/S2 offrono un'interattività simile a quella di SQL locale o locale.

Più in dettaglio, il meccanismo SSDT attuale consiste nel comporre il numero minimo di query per ridurre al minimo il numero di operazioni di andata e ritorno con SQL server/database, quindi ogni tempo di esecuzione delle query è più lungo. Interessa l'interattività di SQL Server Object Explorer mentre la query viene eseguita.

Per migliorare, il team di SSDT sta rivedendo la progettazione di SQLDB di Azure per fornire un'esperienza di interazione più rapida mantenendo il vantaggio dello sviluppo del database basato su modello.

Disclosure: io lavoro sulla squadra Strumenti SQL Data come un PM

+6

"' ... quando si collega un database per la prima volta ... '" Sto vivendo la lentezza con ogni interazione, non solo sul carico iniziale. Il modello non è memorizzato nella cache e invece aggiornato ogni volta che interagisco con il DB? –

+0

Più precisamente, viene creato un modello per sessione VS. Se chiudi e riavvii VS, riavvia il processo per una connessione live. Se il modello è stato creato da un progetto, esiste una cache salvata. È una differenza tra live connection vs project. Una volta creato il modello, le interazioni diventano più veloci. –

+2

Per l'esplorazione rapida dello schema del database e la scoperta dello schema semplice, strumenti come SSMS o Server Explorer in VS saranno più veloci poiché tali strumenti seguono un approccio diverso in cui recuperano una parte delle informazioni dello schema su richiesta in base alla propria interazione in modo che ciascuna transazione sia molto più piccola e più veloce mentre è loquace. –

Problemi correlati