Limiti delle dimensioni di report e snapshot

Le informazioni contenute in questo articolo consentono agli amministratori che gestiscono una distribuzione di Reporting Services di conoscere i limiti relativi alle dimensioni dei report quando questi ultimi vengono pubblicati in un server di report, quando ne viene eseguito il rendering in fase di esecuzione e quando vengono salvati nel file system. In questo articolo vengono inoltre fornite indicazioni pratiche su come calcolare le dimensioni di un database del server di report e vengono descritti gli effetti delle dimensioni degli snapshot sulle prestazioni del server.

Dimensioni massime per i report pubblicati

Nel server di report le dimensioni dei report e dei modelli sono basate sulle dimensioni dei file di definizione del report, con estensione .rdl, e del modello di report, con estensione .smdl, pubblicati in un server di report. Il server di report non prevede limiti per le dimensioni di un report da pubblicare. Microsoft ASP.NET prevede comunque una dimensione massima per gli elementi inviati al server. Per impostazione predefinita, questo limite è di 4 MB. Se si carica o si pubblica in un server di report un file le cui dimensioni superano questo limite, viene generata un'eccezione HTTP. In questo caso, è possibile modificare l'impostazione predefinita aumentando il valore dell'elemento Machine.config nel file maxRequestLength.

Sebbene un modello di report possa avere dimensioni grandi, le definizioni dei report non superano quasi mai i 4 MB. In genere, un report ha dimensioni di alcuni kilobyte (KB). Se tuttavia sono presenti immagini incorporate, la codifica di tali immagini può determinare un aumento considerevole delle dimensioni della definizione del report e, di conseguenza, il superamento del limite predefinito di 4 MB.

ASP.NET prevede un limite massimo per i file inviati al fine di ridurre i rischi di attacchi Denial of Service contro il server. Aumentando il valore, vengono ridotte le capacità di sicurezza garantite da questa limitazione. È pertanto consigliabile aumentarlo solo se i vantaggi che questa modifica comporta bilanciano i maggiori rischi a cui viene esposto il sistema di sicurezza.

Si tenga presente che il valore impostato per l'elemento maxRequestLength deve essere maggiore dei limiti effettivi delle dimensioni che si desidera applicare. Per tenere conto dell'inevitabile aumento delle dimensioni delle richieste HTTP, aumentare il valore. Questo aumento si verifica dopo l'incapsulamento di tutti i parametri in una busta SOAP e l'applicazione della codifica Base64. Con la codifica Base64 le dimensioni dei dati originali vengono aumentate di circa il 33%. Di conseguenza, il valore specificato per l'elemento maxRequestLength deve essere di circa il 33% maggiore delle dimensioni effettive dell'elemento utilizzabile. Ad esempio, se si specifica un valore pari a 64 MB per maxRequestLength, è possibile prevedere realisticamente che le dimensioni massime dei file di report inviati al server di report saranno di circa 48 MB.

Dimensioni dei report in memoria

Quando si esegue un report, le dimensioni di quest'ultimo corrispondono alla quantità di dati restituiti nel report più le dimensioni del flusso di output. In Reporting Services non è previsto un limite massimo per le dimensioni di un report visualizzabile. La memoria di sistema determina il limite massimo per le dimensioni. Per impostazione predefinita, un server di report usa tutta la memoria configurata disponibile durante il rendering di un report. È tuttavia possibile specificare le impostazioni di configurazione per impostare le soglie di memoria e i criteri di gestione della memoria. Per altre informazioni, vedere Configurare la memoria disponibile per applicazioni del server di report.

Le dimensioni di qualsiasi report possono variare significativamente in base alla quantità di dati restituiti e al formato di rendering utilizzato. Le dimensioni di un report con parametri possono variare in base a come i valori dei parametri influiscono sui risultati della query. Il formato di output scelto per il report influisce sulle dimensioni del report in base a quanto indicato di seguito:

  • Con il formato HTML il report viene elaborato una pagina alla volta. Poiché il report viene elaborato in unità di dimensioni minori, per l'elaborazione di blocchi specifici è richiesta una quantità di memoria inferiore.

  • Con i formati PDF, Excel, TIFF, XML e CSV l'intero report viene elaborato in memoria prima di essere visualizzato all'utente.

Per calcolare le dimensioni di un report visualizzabile, è possibile analizzare il log di esecuzione del report. Per altre informazioni, vedere Vista ExecutionLog ed ExecutionLog3 del server di report.

Per calcolare le dimensioni su disco di un report visualizzabile, è possibile esportare e quindi salvare il report nel file system. Il file salvato include informazioni sulla formattazione dei dati e del report.

L'unico caso in cui vi è un limite fisico per le dimensioni del report è quando si esegue il rendering in formato Excel. Nei fogli di lavoro non possono essere presenti più di 65.536 righe o 256 colonne. Con altri formati di rendering non sono presenti limiti simili, pertanto le dimensioni sono limitate solo dalla quantità di risorse disponibili nel server.

Nota

I processi di elaborazione e rendering dei report avvengono in memoria. Se si utilizzano report di grandi dimensioni o sono presenti numerosi utenti, eseguire una pianificazione delle capacità per garantire agli utenti un livello soddisfacente di prestazioni della distribuzione del server di report. Per altre informazioni su strumenti e linee guida, vedere le pubblicazioni seguenti su MSDN: Pianificazione di scalabilità e prestazioni con Reporting Services e Uso di Visual Studio 2005 per eseguire test di carico in un server di report di SQL Server 2005 Reporting Services.

Calcolo dello spazio di archiviazione degli snapshot

Le dimensioni di un determinato snapshot sono direttamente proporzionali alla quantità di dati del report. Gli snapshot hanno in genere dimensioni molto maggiori rispetto agli altri elementi archiviati in un server di report. Le dimensioni degli snapshot variano in genere da pochi MB a decine di MB. Se si dispone di report di dimensioni grandi, le dimensioni degli snapshot potrebbero essere anche maggiori. La quantità di spazio su disco richiesta dal database del server di report può aumentare rapidamente in un breve periodo di tempo. La quantità di spazio su disco che aumenta dipende dalla frequenza di utilizzo degli snapshot e dalla modalità di configurazione della cronologia dei report.

Per impostazione predefinita, sia per il database reportserver che per il database reportservertempdb è impostato l'aumento automatico delle dimensioni. Le dimensioni del database possono aumentare automaticamente ma non vengono mai ridotte automaticamente. Se nel database reportserver è presente capacità in eccesso in quanto sono stati eliminati snapshot, per recuperare spazio su disco è necessario ridurre il database manualmente. Analogamente, se le dimensioni del database reportservertempdb sono aumentate per adattarsi a un volume insolitamente elevato di report interattivi, l'allocazione dello spazio su disco rimane impostata in base a quei valori fino a quando non la si riduce.

Per calcolare le dimensioni dei database del server di report, è possibile eseguire i comandi di Transact-SQL riportati di seguito. Il calcolo delle dimensioni totali del database a intervalli regolari può agevolare lo sviluppo di una stima ragionevole delle modalità di allocazione nel tempo dello spazio per il database del server di report. Le istruzioni seguenti misurano la quantità di spazio attualmente utilizzata. Le istruzioni presuppongono che si usino nomi di database predefiniti:

USE ReportServer  
EXEC sp_spaceused  

Dimensioni degli snapshot e prestazioni del server di report

Le dimensioni degli snapshot influiscono sulle prestazioni del server in fase di elaborazione e rendering del report. Le prestazioni del server sono influenzate soprattutto dalle operazioni di rendering, pertanto se le dimensioni dello snapshot sono elevate, è probabile che si verifichino ritardi quando gli utenti richiedono il report. A seconda del numero di utenti, i ritardi si verificano con maggiore probabilità quando le dimensioni dello snapshot superano i 100 MB.

Per ridurre al minimo i ritardi nelle prestazioni dovuti a snapshot di grandi dimensioni, è possibile completare i passaggi seguenti:

  • Distribuire il server di report e il motore di database di SQL Server in computer separati.

  • Aggiungere ulteriore memoria di sistema.

  • Vedere il documento relativo alla pianificazione di scalabilità e prestazioni con Reporting Services nel sito Web MSDN per informazioni sulle procedure consigliate per la configurazione di un server di report per l'organizzazione.

La quantità di snapshot archiviati in un database del server di report non è un fattore che influisce sulle prestazioni. È possibile archiviare un numero elevato di snapshot senza influenzare le prestazioni del server, nonché mantenere gli snapshot per un periodo illimitato. Tuttavia la cronologia del report può essere modificata. Se un amministratore del server di report riduce il limite per la cronologia del report, si potrebbero perdere snapshot presenti nella cronologia che si desiderava mantenere. Se si elimina il report, viene eliminata anche tutta la relativa cronologia.

Impostare le proprietà di elaborazione dei report
Database del server di report (modalità nativa SSRS)
Elaborare report di grandi dimensioni