Abilitare e disabilitare RDL Sandboxing per Reporting Services in modalità integrata SharePointEnable and disable RDL sandboxing for Reporting Services in SharePoint integrated mode

QUESTO ARGOMENTO SI APPLICA A:THIS TOPIC APPLIES TO: sìSQL Server Reporting Services (2016)SQL Server Reporting Services (2016) sìSharePointSharePoint noServer di report di Power BIPower BI Report Server sìSQL Server Reporting Services (2016)SQL Server Reporting Services (2016) sìSharePointSharePoint noServer di report di Power BIPower BI Report Server

Per contenuti relativi a versioni precedenti di SQL Server Reporting Services, vedere SQL Server Reporting Services 2014.For content related to previous versions of SQL Server Reporting Services, see SQL Server Reporting Services 2014.

La funzionalità RDL (Report Definition Language) Sandboxing consente di rilevare e limitare l'uso di tipi specifici di risorse in base a singoli tenant in un ambiente in cui più tenant usano una sola Web farm di server di report.The RDL (Report Definition Language) sandboxing feature lets you detect and restrict the usage of specific types of resources, by individual tenants, in an environment of multiple tenants that use a single web farm of report servers. Un esempio di questo tipo è rappresentato dai servizi di hosting in cui è possibile gestire una sola Web farm di server di report utilizzati da più tenant e probabilmente da società diverse.An example of this is a hosting services scenario where you might maintain a single web farm of report servers that are used by multiple tenants, and perhaps different companies. L'amministratore del server di report può abilitare questa caratteristica per ottenere gli obiettivi seguenti:As a report server administrator, you can enable this feature to help achieve the following objectives:

  • Limitare le dimensioni delle risorse esterne.Restrict external resource sizes. Le risorse esterne includono immagini, file con estensione xslt e dati mappa.External resources include images, .xslt files, and map data.

  • Al momento della pubblicazione del report, limitare i tipi e i membri utilizzati nel testo dell'espressione.At report publish time, limit types and members that are used in expression text.

  • Al momento dell'elaborazione del report, limitare la lunghezza del testo e le dimensioni del valore restituito per le espressioni.At report processing time, limit the length of the text and the size of the return value for expressions.

Nota

L'integrazione di Reporting Services con SharePoint non è più disponibile nelle versioni successive a SQL Server 2016.Reporting Services integration with SharePoint is no longer available after SQL Server 2016.

Quando RDL Sandboxing è abilitato, sono disabilitate le caratteristiche seguenti:When RDL Sandboxing is enabled, the following features are disabled:

  • Codice personalizzato nell'elemento <Code> di una definizione di report.Custom code in the <Code> element of a report definition.

  • Modalità di compatibilità con le versioni precedenti di RDL per gli elementi di report personalizzati di SQL Server 2005 Reporting Services (SSRS)SQL Server 2005 Reporting Services (SSRS) .RDL backward compatibility mode for SQL Server 2005 Reporting Services (SSRS)SQL Server 2005 Reporting Services (SSRS) custom report items.

  • Parametri denominati nelle espressioni.Named parameters in expressions.

    Questo argomento descrive i singoli componenti dell'elemento <RDLSandboxing> nel file RSReportServer.Config.This topic describes each element in the <RDLSandboxing> element in the RSReportServer.Config file. Per altre informazioni su come modificare questo file, vedere Modificare un file di configurazione di Reporting Services (RSreportserver.config).For more information about how to modify this file, see Modify a Reporting Services Configuration File (RSreportserver.config). Attività dei record del log di traccia del server correlata alla caratteristica RDL Sandboxing.A server trace log records activity related to the RDL Sandboxing feature. Per altre informazioni sui log di traccia, vedere Log di traccia del servizio del server di report.For more information about trace logs, see Report Server Service Trace Log.

Configurazione di esempioExample configuration

L'esempio seguente visualizza le impostazioni e i valori di esempio per l'elemento <RDLSandboxing> nel file RSReportServer.Config.The following example shows the settings and example values for the <RDLSandboxing> element in the RSReportServer.Config file.

<RDLSandboxing>  
   <MaxExpressionLength>5000</MaxExpressionLength>  
   <MaxResourceSize>5000</MaxResourceSize>  
   <MaxStringResultLength>3000</MaxStringResultLength>  
   <MaxArrayResultLength>250</MaxArrayResultLength>  
   <Types>  
      <Allow Namespace=”System.Drawing” AllowNew=”True”>Bitmap</Allow>  
      <Allow Namespace=”TypeConverters.Custom” AllowNew=”True”>*</Allow>  
   </Types>  
   <Members>  
      <Deny>Format</Deny>  
      <Deny>StrDup</Deny>  
   </Members>  
</RDLSandboxing>  

Impostazioni di configurazioneConfiguration settings

Nella tabella seguente sono contenute le informazioni sulle impostazioni di configurazione.The following table provides information about configuration settings. Le impostazioni sono elencate nell'ordine in cui vengono visualizzate nel file di configurazione.Settings are presented in the order in which they appear in the configuration file.

ImpostazioneSetting DescriptionDescription
MaxExpressionLengthMaxExpressionLength Numero massimo di caratteri consentiti nelle espressioni RDL.Maximum number of characters allowed in RDL expressions.

Valore predefinito: 1000Default: 1000
MaxResourceSizeMaxResourceSize Numero massimo di KB consentiti per una risorsa esterna.Maximum number of KB allowed for an external resource.

Valore predefinito: 100Default: 100
MaxStringResultLengthMaxStringResultLength Numero massimo di caratteri consentiti in un valore restituito per un'espressione RDL.Maximum number of characters allowed in a return value for an RDL expression.

Valore predefinito: 1000Default: 1000
MaxArrayResultLengthMaxArrayResultLength Numero massimo di elementi consentiti in un valore restituito della matrice per un'espressione RDL.Maximum number of items allowed in an array return value for an RDL expression.

Valore predefinito: 100Default: 100
TipiTypes Elenco di membri da consentire nelle espressioni RDL.The list of members to allow within RDL expressions.
AllowAllow Tipo o set di tipi da consentire nelle espressioni RDL.A type or set of types to allow in RDL expressions.
Spazio dei nomiNamespace Attributo per Allow che è lo spazio dei nomi contenente uno o più tipi applicabili a Value.Attribute for Allow that is the namespace that contains one or more types that apply to Value. Questa proprietà supporta la distinzione tra maiuscole e minuscole.This property is case-insensitive.
AllowNewAllowNew Attributo booleano per Allow che controlla se le nuove istanze del tipo possono essere create in espressioni RDL o in un elemento RDL <Class>.Boolean attribute for Allow that controls whether new instances of the type are allowed to be created in RDL expressions or in an RDL <Class> element.

Quando RDLSandboxing è abilitato non è possibile creare nuove matrici in espressioni RDL, indipendentemente dall'impostazione di AllowNew.When RDLSandboxing is enabled, new arrays cannot be created in RDL expressions, regardless of the setting of AllowNew.
ValoreValue Valore per Allow che è il nome del tipo da consentire nelle espressioni RDL.Value for Allow that is the name of the type to allow in RDL expressions. Il valore \* indica che sono consentiti tutti i tipi nello spazio dei nomi.The value \* indicates that all types in the namespace are allowed. Questa proprietà supporta la distinzione tra maiuscole e minuscole.This property is case-insensitive.
MembriMembers Per l'elenco dei tipi inclusi nell'elemento <Types>, l'elenco dei nomi membro non consentiti nelle espressioni RDL.For the list of types that are include in the <Types> element, the list of member names that are not allowed in RDL expressions.
NegaDeny Nome di un membro non consentito nelle espressioni RDL.The name of a member that is not allowed in RDL expressions. Questa proprietà supporta la distinzione tra maiuscole e minuscole.This property is case-insensitive.

Quando per un membro è specificato Deny non è consentito nessun membro con questo nome per nessun tipo.When Deny is specified for a member, all members with this name for all types are not allowed.

Uso delle espressioni con RDL Sandboxing abilitatoWorking with expressions when RDL sandboxing is enabled

È possibile modificare la caratteristica RDL Sandboxing per facilitare la gestione delle risorse utilizzate da un'espressione nelle modalità seguenti:You can modify the RDL Sandboxing feature to help manage the resources that are used by an expression in the following ways:

  • Limitare il numero di caratteri utilizzati per un'espressione.Restrict the number of characters that are used for an expression.

  • Limitare le dimensioni del risultato restituito da un'espressione.Restrict the size of the result returned by an expression.

  • Consentire un elenco specifico di tipi che possono essere utilizzati in un'espressione.Allow a specific list of types that can be used in an expression.

  • Limitare l'elenco dei membri in base al nome per l'elenco dei tipi consentiti che possono essere utilizzati in un'espressione.Restrict the list of members by name for the list of allowed types that can be used in an expression.

  • La caratteristica RDL Sandboxing consente di creare un elenco di tipi approvati e un elenco di membri non autorizzati.The RDL Sandboxing feature enables you to create a list of approved types and a list of denied members. L'elenco dei tipi approvati viene denominato elenco consentitiThe list of approved types is called an allow list. mentre l'elenco di membri non autorizzati viene denominato elenco bloccati.The list of denied members is called a block list.

Nota

Nella definizione del report, un computer non può conoscere il tipo di ogni istanza di un riferimento all'espressione.In the report definition, a computer cannot know the type of each instances of an expression reference. Quando si aggiunge un membro all'elenco bloccati, vengono negati tutti i membri con quel nome in tutti i tipi nell'elenco consentiti.When you add a member to the block list, you are denying all members of that name across all types in the allow list.

I risultati dell'espressione RDL vengono verificati in fase di esecuzione.RDL expression results are verified at run time. Le espressioni RDL vengono verificate nella definizione del report durante la pubblicazione di quest'ultimo.RDL expressions are verified in the report definition when the report is published. Monitorare il log di traccia del server di report relativamente alle violazioni.Monitor the report server trace log for violations. Per altre informazioni, vedere Report Server Service Trace Log.For more information, see Report Server Service Trace Log.

Uso dei tipiWorking with types

Quando si aggiunge un tipo all'elenco consentiti, vengono controllati i punti di ingresso seguenti per l'accesso alle espressioni RDL:When you add a type to the allow list, you are controlling the following entry points to access RDL expressions:

  • Membri statici di un tipo.Static members of a type.

  • Metodo Visual BasicVisual Basic New method.The Visual BasicVisual Basic New method.

  • Elemento <Classes> nella definizione del report.The <Classes> element in the report definition.

  • Membri aggiunti all'elenco bloccati per un tipo nell'elenco consentiti.Members that you have added to the block list for a type in the allow list.

    L'elenco consentiti non controlla i punti di ingresso seguenti:The allow list does not control the following entry points:

  • Set di dati del report.Report datasets. I campi nei set di dati del report restituiti dalle query potrebbero contenere qualsiasi tipo RDL valido.Fields in report datasets that are returned from queries might contain any valid RDL type.

  • Parametri di report.Report parameters. I valori dei parametri forniti dall'utente potrebbero contenere qualsiasi tipo RDL valido.User-supplied parameter values might contain any valid RDL type.

  • Membri di un tipo abilitato non inclusi nell'elenco bloccati.Members of an enabled type that are not in the block list. Per impostazione predefinita, vengono abilitati tutti i membri di tutti i tipi nell'elenco consentiti.By default, all members of all types in the allow list are enabled. Quando si aggiunge il nome di un membro all'elenco bloccati, vengono negati tutti i membri con quel nome in tutti i tipi nell'elenco consentiti.When you add a member name to the block list, you are denying all members with that name across all types that are in the allow list.

    Per abilitare un membro di un tipo ma negare un membro con lo stesso nome per un tipo diverso, è necessario eseguire le operazioni seguenti:To enable a member of one type but deny a member with the same name for a different type, you must do the following:

  • Aggiungere un elemento <Deny> per il nome membro.Add a <Deny> element for the member name.

  • Creare un membro proxy con un nome diverso in una classe di un assembly personalizzato per il membro che si desidera abilitare.Create a proxy member with a different name on a class in a custom assembly for the member that you want to enable.

  • Aggiungere la nuova classe all'elenco consentiti.Add that new class to the allow list.

    Per aggiungere funzioni .NET Framework di Visual BasicVisual Basic all'elenco degli elementi consentiti, aggiungere i tipi corrispondenti dallo spazio dei nomi Microsoft.VisualBasic all'elenco.To add Visual BasicVisual Basic .NET Framework functions to the allow list, add the corresponding types from the Microsoft.VisualBasic namespace to the allow list.

    Per aggiungere le parole chiave tipo di Visual BasicVisual Basic .NET Framework all'elenco consentiti, aggiungere il tipo CLR corrispondente all'elenco consentiti.To add Visual BasicVisual Basic .NET Framework type keywords to the allow list, add the corresponding CLR type to the allow list. Ad esempio, per usare la parola chiave .NET Framework di Visual BasicVisual Basic di tipo Intero aggiungere il frammento XML seguente all'elemento <RDLSandboxing>:For example, to use the Visual BasicVisual Basic .NET Framework keyword Integer, add the following XML fragment to the <RDLSandboxing> element:

<Allow Namespace="System">Int32</Allow>  

Per aggiungere un tipo che ammette valori Null o un tipo generico .NET Framework di Visual BasicVisual Basic , è necessario eseguire le operazioni seguenti:To add a generic or a Visual BasicVisual Basic .NET Framework nullable type to the allow list, you must do the following:

  • Creare un tipo proxy per il tipo generico o che ammette valori Null di Visual BasicVisual Basic .NET Framework.Create a proxy type for the generic or Visual BasicVisual Basic .NET Framework nullable type.

  • Aggiungere il tipo di proxy all'elenco consentiti.Add the proxy type to the allow list.

    L'aggiunta di un tipo da un assembly personalizzato all'elenco consentiti non concede in modo implicito autorizzazioni di esecuzione sull'assembly.Adding a type from a custom assembly to the allow list does not implicitly grant execute permission on the assembly. È necessario modificare in modo specifico il file di sicurezza per l'accesso al codice e fornire autorizzazioni di esecuzione all'assembly.You must specifically modify the code access security file and provide execute permission to your assembly. Per altre informazioni, vedere Sicurezza dall'accesso di codice in Reporting Services.For more information, see Code Access Security in Reporting Services.

Gestione dell'elenco di membri <Deny>Maintaining the <Deny> list of members

Quando si aggiunge un nuovo tipo all'elenco consentiti, attenersi all'elenco seguente per determinare quando potrebbe essere necessario aggiornare l'elenco dei membri bloccati:When you add a new type to the allow list, use the following list to determine when you might have to update the block list of members:

  • Quando si aggiorna un assembly personalizzato con una versione che introduce nuovi tipi.When you update a custom assembly with a version that introduces new types.

  • Quando si aggiungono membri ai tipi nell'elenco consentiti.When you add members to the types in the allow list.

  • Quando si aggiorna .NET Framework.NET Framework nel server di report.When you update the .NET Framework.NET Framework on the report server.

  • Quando si aggiorna il server di report a una versione successiva di Reporting ServicesReporting Services.When you upgrade the report server to a later version of Reporting ServicesReporting Services.

  • Quando si aggiorna un server di report per gestire uno schema RDL successivamente, dal momento che è probabile che nuovi membri siano stati aggiunti ai tipi RDL.When you update a report server to handle a later RDL schema, because new members might have been added to RDL types.

Uso degli operatori e dell'operatore NewWorking with operators and new

Per impostazione predefinita, gli operatori di linguaggio .NET Framework di Visual BasicVisual Basic sono sempre consentiti, ad eccezione di New.By default, Visual BasicVisual Basic .NET Framework language operators, except for New, are always allowed. L'operatore New è controllato dall'attributo AllowNew nell'elemento <Allow>.The New operator is controlled by the AllowNew attribute on the <Allow> element. Altri operatori di linguaggio, come l'operatore della funzione di accesso alla raccolta predefinito !,Other language operators, such as the default collection accessor operator ! e le macro di cast .NET Framework di Visual BasicVisual Basic , come CInt, sono sempre consentiti.and Visual BasicVisual Basic .NET Framework cast macros such as CInt, are always allowed.

L'aggiunta di operatori, inclusi quelli personalizzati, a un elenco bloccati non è supportata.Adding operators to a block list, including custom operators, is not supported. Per escludere operatori per un tipo, è necessario effettuare le operazioni seguenti:To exclude operators for a type, you must do the following:

  • Creare un tipo di proxy che non implementa gli operatori che si desidera escludere.Create a proxy type that does not implement the operators that you want to exclude.

  • Aggiungere il tipo di proxy all'elenco consentiti.Add the proxy type to the allow list.

    Per creare una nuova matrice in un'espressione RDL, creare la matrice in un metodo in una classe definita e aggiungere quella classe all'elenco consentiti.To create a new array in an RDL expression, create the array in a method on a class that you define, and add that class to the allow list.

    Per creare una nuova matrice in un'espressione RDL, è necessario eseguire le operazioni seguenti:To create a new array in an RDL expression, you must do the following:

  • Definire una nuova classe e creare la matrice in un metodo in quella classe.Define a new class and create the array in a method on that class.

  • Aggiungere la classe all'elenco consentiti.Add the class to the allow list.

Vedere ancheSee also

File di configurazione RsReportServer.config RsReportServer.config configuration file
Log di traccia del servizio del server di reportReport Server Service trace log

Altre domande?More questions? Visitare il forum su Reporting ServicesTry asking the Reporting Services forum