Condividi tramite


Utilizzo delle espressioni di proprietà nei pacchetti

Data aggiornamento: 5 dicembre 2005

Un'espressione di proprietà è un'espressione che viene assegnata a una proprietà per consentire l'aggiornamento dinamico della proprietà in fase di esecuzione. Un'espressione di proprietà, ad esempio, consente di aggiornare la riga A utilizzata dall'attività Invia messaggi inserendo un indirizzo di posta elettronica archiviato in una variabile.

È possibile includere un'espressione in pacchetti, attività, contenitori Ciclo Foreach, Ciclo For e Sequenza, enumeratori Foreach, gestori dell'evento, gestioni di connessione e provider di log. Qualsiasi proprietà di lettura e scrittura disponibile per tali oggetti può implementare un'espressione di proprietà. Integration Services supporta inoltre l'utilizzo di espressioni di proprietà in alcune proprietà personalizzate dei componenti dei flussi di dati. Le variabili e i vincoli di precedenza non supportano le espressioni di proprietà, ma includono speciali proprietà in cui è possibile utilizzare espressioni.

Le espressioni di proprietà possono essere aggiornate in modi diversi:

  • È possibile includere variabili definite dall'utente nelle configurazioni di pacchetto e aggiornarle quindi in fase di distribuzione del pacchetto. In fase di esecuzione l'espressione di proprietà viene valutata in base al valore aggiornato della variabile.
  • Le variabili di sistema incluse in espressioni vengono aggiornate in fase di esecuzione. Il risultato della valutazione della proprietà è pertanto diverso.
  • Le funzioni di data e ora, che vengono valutate in fase di esecuzione, passano i valori aggiornati alle espressioni di proprietà.
  • Le variabili incluse in espressioni possono essere aggiornate tramite gli script eseguiti dall'attività Script e dal componente Script.

Le espressioni vengono formulate in base al linguaggio delle espressioni di Microsoft SQL Server 2005 Integration Services (SSIS). Nelle espressioni è possibile includere variabili definite dall'utente o di sistema, insieme agli operatori, alle funzioni e ai cast di tipo del linguaggio delle espressioni.

[!NOTA] I nomi delle variabili di sistema e delle variabili definite dall'utente devono essere specificati rispettando la distinzione tra maiuscole e minuscole.

Per ulteriori informazioni, vedere Guida di riferimento alle espressioni in Integration Services.

Un utilizzo importante delle espressioni di proprietà è la personalizzazione delle configurazioni per ogni istanza di pacchetto distribuita. Ciò consente l'aggiornamento dinamico delle proprietà del pacchetto in ambienti diversi. È possibile, ad esempio, creare un'espressione di proprietà che assegna una variabile alla stringa di connessione di una gestione connessione e aggiorna quindi la variabile in fase di distribuzione del pacchetto in modo da garantire la validità della stringa di connessione in fase di esecuzione. Le configurazioni di pacchetto vengono caricate prima della valutazione delle espressioni di proprietà.

Una proprietà può utilizzare una sola espressione di proprietà e a sua volta un'espressione di proprietà può essere applicata a una sola proprietà. È tuttavia possibile creare più espressioni di proprietà identiche e assegnarle a proprietà diverse.

Alcune proprietà vengono impostate utilizzando valori specificati da enumeratori. Per fare riferimento a un membro di un enumeratore in un'espressione di proprietà, è necessario utilizzare il valore numerico equivalente al nome descrittivo di tale membro dell'enumeratore. Se ad esempio un'espressione di proprietà imposta la proprietà LoggingMode, che utilizza un valore dell'enumerazione DTSLoggingMode, l'espressione di proprietà dovrà utilizzare 0, 1 o 2, anziché i nomi descrittivi Enabled, Disabled o UseParentSetting. Per ulteriori informazioni, vedere Utilizzo di costanti enumerate in espressioni di proprietà.

Interfaccia utente delle espressioni di proprietà

In Integration Services è disponibile un insieme di strumenti per la creazione e la gestione delle espressioni di proprietà.

  • Pagina Espressioni degli editor personalizzati delle attività e dei contenitori Ciclo For e Ciclo Foreach. In questa pagina è possibile modificare espressioni e visualizzare un elenco delle espressioni di proprietà utilizzate da un'attività o da un contenitore Ciclo Foreach o Ciclo For.
  • Finestra Proprietà per la modifica di espressioni e la visualizzazione di un elenco delle espressioni di proprietà utilizzate da un pacchetto o dagli oggetti di pacchetto.
  • Finestra di dialogo Editor espressioni di proprietà per la creazione, l'aggiornamento e l'eliminazione di espressioni di proprietà.
  • Finestra di dialogo Generatore di espressioni per la creazione di espressioni tramite strumenti grafici. In questa finestra le espressioni possono venire valutate senza assegnare il risultato alla proprietà in modo da consentirne prima la revisione.

Nella figura seguente vengono illustrati i componenti dell'interfaccia utente che consentono di aggiungere, modificare e rimuovere espressioni di proprietà.

Interfaccia utente per espressioni di proprietà

Nella ****finestra Proprietà fare clic sul pulsante con i puntini di sospensione (…) al livello dell'insieme Expressions per aprire la finestra di dialogo Editor espressioni di proprietà. Nella finestra Editor espressioni di proprietà è possibile mappare una proprietà a un'espressione e digitare espressioni di proprietà. Se per creare e quindi convalidare l'espressione si desidera utilizzare gli strumenti grafici, fare clic sul pulsante di ricerca (…) al livello dell'espressione per aprire la finestra di dialogo Generatore di espressioni e quindi creare o modificare e facoltativamente convalidare l'espressione.

È possibile accedere alla finestra di dialogo Generatore di espressioni anche dalla finestra di dialogo Editor espressioni di proprietà.

Impostazione di espressioni di proprietà per i componenti dei flussi di dati

Se si crea un pacchetto in Business Intelligence Development Studio, le proprietà dei componenti di un flusso di dati che supportano espressioni di proprietà vengono esposte sull'attività Flusso di dati a cui appartengono. Per aggiungere, modificare e rimuovere le espressioni di proprietà dei componenti di un flusso di dati, è necessario fare clic con il pulsante destro del mouse sull'attività Flusso di dati a cui appartengono tali componenti e scegliere Proprietà. Nella finestra Proprietà sono elencate le proprietà dei componenti del flusso di dati per le quali è possibile utilizzare espressioni di proprietà. Per creare o modificare un'espressione di proprietà per la proprietà SamplingValue di una trasformazione Campionamento righe in un flusso di dati di nome SampleCustomer, ad esempio, fare clic con il pulsante destro del mouse sull'attività Flusso di dati corrispondente al flusso di dati a cui appartiene la trasformazione Campionamento righe e scegliere Proprietà. La proprietà SamplingValue è elencata nella finestra Proprietà, con il formato [SampleCustomer].[SamplingValue].

Nella finestra Proprietà è possibile aggiungere, modificare e rimuovere espressioni di proprietà per i componenti dei flussi di dati come avviene per le espressioni di proprietà degli altri tipi di oggetti di Integration Services. La finestra Proprietà consente inoltre di accedere alle altre finestre di dialogo e agli altri generatori necessari per aggiungere, modificare o rimuovere espressioni di proprietà per i componenti dei flussi di dati. Per ulteriori informazioni sulle proprietà dei componenti dei flussi di dati che è possibile aggiornare tramite espressioni di proprietà, vedere Source Custom Properties, Transformation Custom Properties e Destination Custom Properties.

Caricamento di espressioni di proprietà

Non è possibile specificare o controllare il momento in cui avviene il caricamento delle espressioni di proprietà. Le espressioni di proprietà vengono valutate e caricate al momento della convalida del pacchetto e degli oggetti di pacchetto. La convalida avviene quando si salva il pacchetto, quando si apre il pacchetto in Progettazione SSIS e quando si esegue il pacchetto.

I valori aggiornati delle proprietà degli oggetti di pacchetto che utilizzano espressioni di proprietà non saranno pertanto disponibili in Progettazione SSIS finché il pacchetto non verrà salvato, eseguito o riaperto dopo l'aggiunta delle espressioni di proprietà.

Anche le espressioni di proprietà associate ad altri tipi di oggetti, quali gestioni connessioni, provider di log ed enumeratori, vengono caricate al momento della chiamata di metodi specifici del tipo di oggetto. Le proprietà delle gestioni connessioni, ad esempio, vengono caricate prima della creazione di un'istanza della connessione da parte di Integration Services.

Le espressioni di proprietà vengono caricate dopo il caricamento delle configurazioni di pacchetto. Le variabili, ad esempio, vengono innanzitutto aggiornate dalle relative configurazioni e quindi vengono valutate e caricate le espressioni di proprietà che utilizzano tali variabili. Di conseguenza, le espressioni di proprietà utilizzano sempre i valori delle variabili impostati dalle configurazioni.

Nota   Non è possibile utilizzare l'opzione Set di dtexec per popolare un'espressione di proprietà.

Nella tabella seguente sono riepilogati i momenti in cui vengono valutate e caricate le espressioni di proprietà di Integration Services.

Tipo di oggetto Caricamento e valutazione

Pacchetto, ciclo Foreach, ciclo For, sequenza, attività e componenti dei flussi di dati

Dopo il caricamento delle configurazioni

Prima della convalida

Prima dell'esecuzione

Gestioni connessioni

Dopo il caricamento delle configurazioni

Prima della convalida

Prima dell'esecuzione

Prima della creazione di un'istanza della connessione

Provider di log

Dopo il caricamento delle configurazioni

Prima della convalida

Prima dell'esecuzione

Prima dell'apertura dei log

Enumeratori Foreach

Dopo il caricamento delle configurazioni

Prima della convalida

Prima dell'esecuzione

Prima di ogni enumerazione del ciclo

Utilizzo di espressioni di proprietà nel ciclo Foreach

È spesso consigliabile implementare un'espressione di proprietà per impostare il valore della proprietà ConnectionString delle gestioni connessioni utilizzate nel contenitore Ciclo Foreach. Dopo che tramite l'enumeratore viene eseguito il mapping tra il relativo valore corrente e una variabile in ogni iterazione del ciclo, l'espressione di proprietà può utilizzare il valore di questa variabile per aggiornare dinamicamente il valore della proprietà ConnectionString.

Se si desidera utilizzare espressioni di proprietà con la proprietà ConnectionString delle gestioni connessioni per file, più file, file flat e più file flat utilizzate da un ciclo Foreach, sarà necessario tenere conto di alcuni aspetti. Un pacchetto può essere configurato in modo da eseguire più file eseguibili contemporaneamente, impostando la proprietà MaxConcurrentExecutables su un valore maggiore di 1 o sul valore -1. Se si specifica il valore -1, il numero massimo dei file eseguibili eseguiti contemporaneamente è uguale al numero dei processori più due. Per evitare le conseguenze negative dell'esecuzione parallela dei file eseguibili, è consigliabile impostare il valore di MaxConcurrentExecutables su 1. Se la proprietà MaxConcurrentExecutables non è impostata su 1, il valore della proprietà ConnectionString non può essere garantito e i risultati sono imprevedibili.

Considerare, ad esempio, un ciclo Foreach che enumera i file in una cartella, recupera i nomi dei file e quindi utilizza l'attività Esegui SQL per inserire ogni nome di file in una tabella. Se la proprietà MaxConcurrentExecutables non è impostata su 1 e due istanze dell'attività Esegui SQL tentano di scrivere contemporaneamente nella tabella, potrebbero verificarsi conflitti di scrittura.

Espressioni di proprietà di esempio

Le espressioni di esempio seguenti illustrano l'utilizzo di variabili di sistema, operatori, funzioni e valori letterali stringa nelle espressioni di proprietà.

Espressione di proprietà per la proprietà LoggingMode di un pacchetto

L'espressione di proprietà seguente consente di impostare la proprietà LoggingMode di un pacchetto. L'espressione utilizza le funzioni DAY e GETDATE per ottenere un valore integer che rappresenta la parte del giorno in una data. Se il numero del giorno è 1 o 15, la registrazione verrà attivata, altrimenti sarà disattivata. Il valore 1 è il valore integer equivalente al membro Enabled dell'enumeratore LoggingMode, mentre il valore 2 è il valore integer equivalente al membro Disabled. Nell'espressione è necessario utilizzare il valore numerico corrispondente al nome del membro desiderato dell'enumeratore.

DAY((DT_DBTIMESTAMP)GETDATE())==1||DAY((DT_DBTIMESTAMP)GETDATE())==15?1:2

Espressione di proprietà per la riga Oggetto di un messaggio di posta elettronica

L'espressione di proprietà seguente consente di impostare la proprietà Subject dell'attività Invia messaggi e di inserire testo appropriato nella riga Oggetto di un messaggio di posta elettronica. Nell'espressione vengono utilizzati valori letterali stringa, variabili di sistema, l'operatore di concatenamento (+), l'operatore cast e le funzioni DATEDIFF e GETDATE. Le variabili di sistema sono PackageName e StartTime.

"PExpression-->Package: (" + @[System::PackageName] + ") Started:"+ (DT_WSTR, 30) @[System::StartTime] + " Duration:" + (DT_WSTR,10) (DATEDIFF( "ss", @[System::StartTime] , GETDATE() )) + " seconds"

Se il nome del pacchetto è EmailRowCountPP, eseguito il 3/4/2005, con durata di esecuzione di 9 secondi, l'espressione viene valutata nella stringa seguente.

PExpression-->Package: (EmailRowCountPP) Started:3/4/2005 11:06:18 AM Duration:9 seconds.

Espressione di proprietà per il testo di un messaggio di posta elettronica

L'espressione di proprietà seguente consente di impostare la proprietà MessageSource dell'attività Invia messaggi. Nell'espressione vengono utilizzati valori letterali stringa, variabili definite dall'utente e l'operatore di concatenamento (+). Le variabili definite dall'utente sono denominate nasdaqrawrows, nyserawrows e amexrawrows. La stringa "\n" indica un ritorno a capo.

"Rows Processed: " + "\n" +" NASDAQ: " + (dt_wstr,9)@[nasdaqrawrows] + "\n" + " NYSE: " + (dt_wstr,9)@[nyserawrows] + "\n" + " Amex: " + (dt_wstr,9)@[amexrawrows]

Se nasdaqrawrows è 7058, nyserawrows è 3528 e amexrawrows è 1102, l'espressione restituisce la stringa seguente.

Rows Processed:

NASDAQ: 7058

NYSE: 3528

AMEX: 1102

Espressione di proprietà per la proprietà Executable dell'attività Esegui processo

L'espressione di proprietà seguente consente di impostare la proprietà Executable dell'attività Esegui processo. Nell'espressione viene utilizzata una combinazione di valori letterali stringa, operatori e funzioni, e precisamente le funzioni DATEPART e GETDATE e l'operatore condizionale.

DATEPART("weekday", GETDATE()) ==2?"notepad.exe":"mspaint.exe"

Se la data odierna corrisponde al secondo giorno della settimana, l'attività Esegui processo esegue notepad.exe. In caso contrario esegue mspaint.exe.

Espressione di proprietà per la proprietà ConnectionString di una gestione connessione file flat

L'espressione di proprietà seguente consente di impostare la proprietà ConnectionString di una gestione connessione file flat. Nell'espressione viene utilizzata una sola variabile definita dall'utente, ovvero la variabile myfilenamefull, che specifica il percorso di un file di testo.

@[User::myfilenamefull]

[!NOTA] È possibile accedere alle espressioni di proprietà per le gestioni connessioni solo tramite la finestra Proprietà. Per visualizzare le proprietà di una gestione connessione, è necessario selezionare la gestione connessione nella sezione Gestioni connessioni di Progettazione SSIS, quando la finestra Proprietà è aperta, oppure fare clic con il pulsante destro del mouse sulla gestione connessione e scegliere Proprietà.

Espressione di proprietà per la proprietà ConfigString di un provider di log File di testo

L'espressione di proprietà seguente consente di impostare la proprietà ConfigString di un provider di log File di testo. Nell'espressione viene utilizzata una sola variabile definita dall'utente, ovvero la variabile varConfigString, che contiene il nome della gestione connessione file da utilizzare. La gestione connessione file specifica il percorso del file di testo in cui verranno scritte le voci di log.

@[User::varConfigString]

[!NOTA] È possibile accedere alle espressioni di proprietà per i provider di log solo tramite la finestra Proprietà. Per visualizzare le proprietà di un provider di log, è necessario selezionare il provider di log nella scheda Esplora pacchetti di Progettazione SSIS, quando la finestra Proprietà è aperta, oppure fare clic con il pulsante destro del mouse sul provider log in Esplora pacchetti e scegliere Proprietà.

Per utilizzare le espressioni di proprietà

Vedere anche

Attività

Utilizzo di variabili nei pacchetti

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Contenuto modificato:
  • Aggiunta dell'immagine dell'interfaccia utente per l'utilizzo delle espressioni di proprietà.
  • Aggiunta delle informazioni sull'utilizzo di espressioni di proprietà nelle proprietà dei componenti dei flussi di dati.
  • Aggiunta delle informazioni sul caricamento e la valutazione delle espressioni di proprietà.
  • Aggiunta delle informazioni sull'utilizzo di espressioni di proprietà in un ciclo Foreach.
  • Aggiunta del collegamento a un nuovo argomento in cui sono elencati i valori delle enumerazioni e i rispettivi nomi descrittivi.