8

Ho una procedura memorizzata che restituisce circa 50000 record in 10 secondi utilizzando al massimo 2 core in SSMS. Il rapporto SSRS che utilizzava la procedura memorizzata richiedeva 20 minuti e per un tempo massimo avrebbe esaurito il processore su un server 8 core. Il rapporto era relativamente semplice (vale a dire senza grafici, calcoli). Il rapporto non sembra essere il problema in quanto ho scritto le righe da 50K a una tabella temporanea e il rapporto potrebbe visualizzare i dati in pochi secondi. Ho provato molte idee diverse per testare ogni volta la modifica della stored procedure, ma mantenendo il codice originale in una finestra separata per tornare a. Dopo un Alter della stored procedure, tornando al codice originale, l'utilizzo del report e del server è iniziato rapidamente, paragonabile alle prestazioni della stored procedure. Per ora va tutto bene, ma mi piacerebbe arrivare fino in fondo a ciò che l'ha causato nel caso in cui succedesse di nuovo. Qualche idea?SSRS Performance Mystery

+0

indici su tabelle? Un piano di esecuzione stantio? Le statistiche sono state aggiornate? Hai avuto un log SqlProfiler? Questo aiuterà in futuro .. – rene

+0

Solo rendering o rendering come PDF? – SQLMason

+0

Dan: basta eseguire il rendering di un report standard sul Web. Rene - Non ho eseguito SqlProfiler durante la risoluzione dei problemi. L'ho eseguito su query locali, ma c'è qualcosa di speciale che devo fare per registrare le chiamate del DB SSRS? Inoltre non ho scavato nei registri di esecuzione di SSRS, ma stavo considerando se l'altro troubleshooting non avesse funzionato. Come si può rilevare un piano di esecuzione obsoleto? – user101654

risposta

0

Vorrei iniziare con una traccia di SQL Profiler sia della procedura memorizzata quando la si esegue normalmente, e quindi la stessa SP quando viene chiamata da SSRS. Assicurati di includere i piani di esecuzione coinvolti, in modo che tu possa vedere se sta prendendo delle decisioni sbagliate (anche se sembra improbabile) che SQL Server debba eseguire un piano ottimale, o almeno consistente, indipendentemente dall'origine della query).

Avevamo casi in cui Business Objects eseguiva stored procs decine di volte senza alcun motivo e produceva occasionalmente prestazioni orribili, sebbene non abbia mai visto lo stesso comportamento con SSRS. Potrebbe essere un punto di partenza, però. Vedrai anche le ore di inizio/fine esecuzione, che renderanno più chiaro se il livello del database è sospeso o se SQL Server restituisce i dati in 10 secondi e quindi il servizio SSRS si blocca da qualche parte.

0

La soluzione principale per velocizzare i report SSRS è la cache cache. Se lo si fa (ad esempio, il mio preloading della cache alle 7:30) o memorizza nella cache i report in tempo reale, uno sarà il a trovare enormi guadagni in termini di velocità di caricamento.

È inoltre possibile trovare riavvii mensili del dominio dell'applicazione SSRS per risolvere il problema.

prega di notare che lo faccio quotidianamente e professionalmente e non sono semplicemente ceretta poetica sulla SSRS

Caching in SSRS http://msdn.microsoft.com/en-us/library/ms155927.aspx

pre-caricamento della cache http://msdn.microsoft.com/en-us/library/ms155876.aspx

Se lo fai non come i rapporti iniziali che richiedono molto tempo ei tuoi dati sono statici, ad esempio un libro mastro giornaliero o simili, il che significa che i dati sono relativamente statici durante il giorno, aumentare la durata della cache.

Infine, si può anche optare per i manager aziendali di ricevere questi rapporti via e-mail abbonamenti , che invierà loro un punto nel tempo report di Excel che potrebbero trovare più facile e più sistematica.

È inoltre possibile utilizzare i parametri in SSRS per consentire un facile parsing dell'utente e query più veloci. Nel generatore di query di tipo IN (@SSN) sotto la colonna Filtro che desideri parametrizzare, lo troverai quindi nella cartella dei parametri appena sopra le origini dati nella parte in alto a sinistra della GUI BIDS. [Se non vedi la sezione dell'origine dati in SSRS, premi CTRL + ALT + D.

Vedi una domanda quasi identica qui: Performance Issuses with SSRS