Condividi tramite


Definizione dello schema delle notifiche

Le regole di sottoscrizione inseriscono le notifiche in una vista di notifiche. Si tratta di una vista della tabella delle notifiche denominata in base alla classe di notifica. Gli schemi della vista e della tabella sottostante derivano dallo schema della classe di notifica. È possibile definire i campi che costituiscono questo schema nella classe di notifica.

In questo argomento vengono descritti i campi predefiniti aggiunti da Notification Services allo schema e viene illustrato come creare campi personalizzati, inclusi campi personalizzati calcolati, per i dati delle notifiche.

Campi predefiniti per le notifiche

Quando si crea la tabella in cui sono archiviate le notifiche di una classe di notifica, Notification Services crea una colonna nella tabella per ogni campo di notifica dichiarato e aggiunge altre cinque colonne utilizzate per la formattazione e il recapito della notifica:

[!NOTA] Non definire i campi seguenti nello schema della classe di notifica. Se vengono definiti, la creazione dell'applicazione non verrà infatti eseguita correttamente a causa della presenza di definizioni di campo duplicate.

  • NotificationId è una colonna bigint. Notification Services inserisce un valore in questo campo per ogni notifica. Si tratta di un valore univoco all'interno della classe di notifica.
  • NotificationId è una colonna bigint. Ogni regola che genera notifiche crea uno o più batch di notifiche. Notification Services inserisce automaticamente il numero di batch nella tabella delle notifiche.
  • SubscriberId è una colonna nvarchar(255) contenente l'ID del sottoscrittore della notifica generata. Notification Services utilizza l'ID del sottoscrittore per recuperare le informazioni di recapito per la notifica. La regola di sottoscrizione che genera le notifiche deve inserire questo valore.
  • DeviceName è una colonna nvarchar(255) contenente il nome di un dispositivo del sottoscrittore, memorizzato nella tabella SubscriberDevices nel database dell'istanza. Notification Services utilizza il nome del dispositivo per ottenere le informazioni di recapito e può fornire tale nome a un formattatore del contenuto per la formattazione personalizzata. La regola di sottoscrizione che genera le notifiche deve inserire questo valore. Si noti che i valori di SubscriberId e DeviceName devono corrispondere a un record della tabella SubscriberDevices.
  • SubscriberLocale è una colonna nvarchar(10) contenente un codice delle impostazioni internazionali. Questo codice deve essere uno dei codici delle impostazioni internazionali supportati e deve essere inserito tramite la regola di sottoscrizione. Notification Services passa queste informazioni al formattatore del contenuto, in modo che possa applicare la formattazione specifica delle impostazioni internazionali. Per un elenco dei codici supportati, vedere Subscriber Locale Codes.

Le colonne successive della tabella delle notifiche vengono definite dai campi di notifica nella classe di notifica. Dopo i campi personalizzati, Notification Services aggiunge altri tre campi per la registrazione del recapito della notifica:

  • DeliveryStatusCode è una colonna tinyint contenente un codice per lo stato del recapito. Queste informazioni non vengono utilizzate per la creazione di report.
  • SentTime è una colonna datetime contenente l'ora in cui il protocollo di recapito ha segnalato lo stato di recapito della notifica.
  • LinkNotificationId è una colonna bigint di interesse solo per il recapito digest. Se la notifica è stata inclusa in un digest e non è la prima notifica del digest, questo campo contiene l'ID della prima notifica. La prima notifica contiene le informazioni sullo stato e sull'ora.

Queste informazioni non vengono utilizzate per operazioni di debug e per la creazione di report. A questo scopo utilizzare invece Vista NS<NotificationClassName>NotificationDistribution, che fornisce queste informazioni in un formato più leggibile.

Campi di notifica personalizzati

I campi personalizzati sono campi in cui vengono archiviati i dati di interesse per i sottoscrittori o quelli utilizzati per generare la notifica finale.

La definizione dei campi personalizzati per una classe di notifica richiede la conoscenza dei dati da inviare, che devono corrispondere ai dati forniti dalla regola di sottoscrizione che genera le notifiche.

Per ogni campo personalizzato, è necessario definire il nome del campo e il tipo di dati. Se, ad esempio, si desidera inviare notifiche con le previsioni del tempo, è possibile definire i campi di notifica seguenti:

  • Nome campo: City, tipo di campo: nvarchar(35)
  • Nome campo: State, tipo di campo: nvarchar(35)
  • Nome campo: Forecast, tipo di campo: nvarchar(3500)

I tipi di dati di questi campi devono essere compatibili con i tipi di dati di origine utilizzati durante la generazione delle notifiche.

Se si utilizza il recapito digest e si desidera raggruppare tutte le notifiche di un sottoscrittore per lo stesso stato, impostare il raggruppamento digest su true per tale campo. La nuova definizione del campo State sarà la seguente:

  • Nome campo: State, tipo di campo: nvarchar(35), raggruppamento digest: true.

Per ulteriori informazioni sul recapito digest, vedere Impostazione del recapito digest o multicast.

Per definire i campi di una classe di notifica

Campi calcolati

I campi calcolati consentono di calcolare i dati delle notifiche immediatamente prima che il contenuto venga passato al formattatore.

I campi calcolati utilizzano espressioni Transact-SQL per generare un valore per un campo di notifica immediatamente prima che la notifica venga passata al formattatore del contenuto. È possibile utilizzare qualsiasi espressione Transact-SQL che può essere valutata come parte di una query SELECT nel database dell'applicazione. È consentito l'utilizzo di costanti arbitrarie e di chiamate a funzioni.

[!NOTA] Nella sintassi Transact-SQL, le costanti stringa devono essere racchiuse tra virgolette singole. Pertanto, se si utilizza una stringa in un campo calcolato, è necessario racchiuderla tra virgolette singole. Se la stringa è Unicode, aggiungere una N prima della virgoletta di apertura, ad esempio N'miaStringa'.

Se si desidera aggiungere un campo calcolato alla classe di notifica, è necessario definire un nome di campo e l'espressione Transact-SQL. Se, ad esempio, si desidera convertire un prezzo in una stringa formattata, è possibile specificare quanto segue nella definizione del campo calcolato:

  • Nome campo: FormattedStockPrice,
  • Espressione Transact-SQL: CONVERT(NVARCHAR(10), StockPrice, 1)

Quando una notifica viene inviata al formattatore del contenuto, questo campo calcolato recupera il valore del campo StockPrice e lo converte in una stringa formattata. Ad esempio, se il campo StockPrice è un valore money pari a 1000,70, il campo FormattedStockPrice corrisponderà alla stringa 1.000,70.

È inoltre possibile specificare che un campo calcolato venga utilizzato per determinare quali notifiche raggruppare per un recapito digest. Per raggruppare le notifiche con lo stesso valore di un campo calcolato, impostare le proprietà di raggruppamento digest su true per il campo calcolato.

Per definire i campi calcolati di una classe di notifica

Vedere anche

Concetti

Configurazione dei formattatori del contenuto
Impostazione del recapito digest o multicast
Specificazione delle dimensioni dei batch di notifica
Impostazione della scadenza di una notifica
Impostazione del recapito digest o multicast

Altre risorse

Definizione delle classi di notifica
Configurazione dei protocolli di recapito
Espressioni (Transact-SQL)
CREATE TABLE (Transact-SQL)
Definizione delle classi di notifica
Definizione di applicazioni di Notification Services

Guida in linea e informazioni

Assistenza su SQL Server 2005