2009-06-10 16 views
5

ciao ragazzi di recente sono entrato in un'azienda. Mi hanno assegnato un compito è quello di migliorare le prestazioni dei rapporti SSRS esistenti.Problemi di prestazioni con SSRS

ho guardato la stored procedure che sta funzionando bene. Ma quando si tratta di esecuzione di report ci vuole tempo.

Per favore fatemi sapere come iniziare questa cosa? Grazie in anticipo

+0

Probabilmente riceverai più risposte su questo problema se lo pubblichi su ServerFault, poiché la stored procedure va bene per ogni domanda posta. – Sung

+0

Sung: Non c'è niente di sbagliato nelle domande di Reporting Services su SO. – TheTXI

+0

@TheTXI: Oh, volevo dire che venkat potrebbe ottenere altri tipi di consigli su come risolvere i problemi SSRS dal punto di vista delle persone IT;) – Sung

risposta

6
  1. Il report esegue i propri calcoli sui dati restituiti che potrebbero richiedere tempo e risorse sufficienti?

  2. I grafici di disegno di report hanno molti e molti punti dati che potrebbero richiedere più tempo per essere riprodotti rispetto a un grafico con un incremento maggiore?

  3. Il rapporto carica le immagini? Come vengono gestite le immagini? Sono incorporati o collegati da una fonte esterna?

  4. Stai creando molti gruppi o drill-down che potrebbero richiedere del tempo nel caricamento del rapporto da creare?

Rispondere a queste domande può iniziare a indirizzarvi verso la direzione corretta per quanto riguarda il modo in cui rendere il vostro rapporto più efficiente.

+0

Grazie per la risposta .... Come hai detto, alcuni rapporti caricano immagini da fonti esterne e altri report che disegnano il grafico – Anoop

0

Migliora le prestazioni in che senso? Consuma più memoria o si nutre della CPU o usa troppo I/O del disco? Cosa intendi dicendo che gli SP stanno andando bene? Corrono bene ma impiegano molto tempo? o corrono bene e si eseguono rapidamente?

Iniziamo innanzitutto a capire quale metrica delle prestazioni è stata migliorata & quindi identificare dove il collo di bottiglia è se si trova nel server di report o nel server di database. Puoi anche usare perfmon per identificare i colli di bottiglia.

+0

Grazie per la risposta ... Gli SP stanno funzionando bene in SSMS. Il problema viene avviato dopo l'associazione del SP al DataSet per l'esecuzione del report. – Anoop

2

Che cosa intendi per "le stored procedure funzionano correttamente"? Potresti voler indagare ulteriormente.

  • Eseguire le stored procedure da SSMS e visualizzare i piani di query che genera. C
  • Verificare che le tabelle sono indicizzate in modo appropriato per velocizzare le query
  • individuare ed eliminare cruft come inutili unisce, colonne selezionate non necessarie, ecc
+0

Quando eseguo gli SP da SSMS essi Esegui rapidamente, Dopo aver vincolato gli SP al DataSet, ci vuole tempo – Anoop

6

Si potrebbe guardare a tavola ExecutionLog nel database ReportServer. Questo ti darà la scomposizione di tempi come il recupero dei dati, l'elaborazione, il rendering ecc. Questo potrebbe farti andare nella giusta direzione.

Ad esempio, nel mio precedente report di rendering del progetto in MS Excel ci volevo molto tempo: abbiamo cambiato alcuni report da esportare per impostazione predefinita in formato CSV e questo ha aiutato. Allo stesso modo, abbiamo anche identificato il collo di bottiglia nell'elaborazione del report e aggiunto più risorse alla macchina. Anche questo ha aiutato.

1

La soluzione principale per eccesso di velocità report SSRS, a prescindere dal database e come analista di business in una gerarchia di grandi dimensioni, è quello di memorizzare nella cache i rapporti. Se lo si fa in modo intelligente (ad es. Il mio preloading della cache alle 7:30 per esempio) o memorizza in cache i report in tempo reale per 45 minuti, uno sarà a trovare enormi guadagni in velocità di caricamento.

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

Dalla tua domanda, avete il caching su colpo, se non ti piace rapporti iniziali che prendono così a lungo, e che i dati sono relativamente statico durante il giorno, , è possibile 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.

Se tutti coloro fail, considerano sniffing dei parametri, vale a dire

Se questa è la query originale

CREATE PROCEDURE [SP_Test_ParameterSniffing] 
@CustomerID INT 
AS 
BEGIN 

SELECT * 
FROM Customer c 
WHERE c.CustomerID = @CustomerID 

END 

Tutto quello che dovete fare è aggiungere un nuovo parametro per la vostra Codice SP e assegnare il valore passato a SP al nuovo parametro e utilizzarlo nella clausola WHERE:

CREATE PROCEDURE [SP_Test_ParameterSniffing] 
@CustomerID INT 
AS 
BEGIN 

DECLARE @CustomerID2 INT; 
SET @CustomerID2 = @CustomerID; 
SELECT * 
FROM Customer c 
WHERE c.CustomerID = @CustomerID2 

END 
1

Qui di seguito sono alcuni dei motivi per scarso rendimento (più tempo di esecuzione) di report SSRS

1) quando si utilizzano i parametri più in cascata per i report

2) quando si stanno ottenendo direttamente i dati da oracolo o origine dati esterna.

3) utilizzando la funzione "per xml()" nella query sql del rapporto ssrs.

Soluzione: Provare a utilizzare, se possibile, di

2

Si può anche provare per il paging personalizzato sui rapporti che mostrano enormi quantità di dati snapshot del report. In questo modo hai ridotto il tempo di incasso e hai mostrato solo un numero limitato di record invece di caricare interi dati alla prima volta.

+0

Non sono sicuro di aver capito cosa stai suggerendo. Puoi renderlo più chiaro? –

+0

Per impostazione predefinita, SSRS utilizza il controllo predefinito del cercapersone per rimuovere il controllo del cercapersone utilizzando il controllo personalizzato del cercapersone. È possibile restituire un numero limitato di righe di output memorizzate proc. – Nishant

Problemi correlati