NSPrepareRuleFiring (Transact-SQL)
Prepara il database dell'applicazione per l'esecuzione di regole, verificando che sia stato pianificato un quantum, che le viste di eventi e di sottoscrizioni pianificate siano materializzate in modo corretto per il quantum e che per il quantum siano pianificate esecuzioni di regole in base al set di eventi e sottoscrizioni disponibile.
Al termine della stored procedure, lo stato del database dell'applicazione è equivalente allo stato esistente prima dell'esecuzione della regola durante il normale funzionamento del generatore.
Sintassi
[ application_schema_name . ] NSPrepareRuleFiring
[ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
[, [ @DisableQuantumLimits = ] quantum_limits_flag ]
Argomenti
[ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag
Indica se la routine di esecuzione della regola preparata restituisce un elenco delle cronologie di eventi che possono essere interessate o utilizzate dall'esecuzione della regola. Se si specifica un valore diverso da zero, la routine restituirà un set di risultati con l'elenco delle cronologie di eventi associate all'esecuzione della regola preparata. chronical_usage_flag è di tipo tinyint e il valore predefinito è 1.
[ @DisableQuantumLimits = ] quantum_limits_flag
Indica se la pianificazione di un nuovo quantum utilizza il valore di ChronicleQuantumLimit e il valore di SubscriptionQuantumLimit delle impostazioni di esecuzione dell'applicazione contenute nel file di definizione dell'applicazione (ADF). Un valore diverso da zero indica che la stored procedure non deve utilizzare queste impostazioni per saltare uno o più periodi di quantum. quantum_limits_flag è di tipo tinyint e il valore predefinito è 1.
Set di risultati
NSPrepareRuleFiring genera uno o due set di risultati. Il primo set di risultati contiene informazioni sulla regola.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
QuantumId |
int |
ID del quantum per l'esecuzione della regola. |
QuantumStartTime |
datetime |
Data e ora UTC (Coordinated Universal Time o ora di Greenwich) di inizio del quantum che contiene la regola. |
QuantumEndTime |
datetime |
Data e ora UTC di fine del quantum che contiene la regola. |
RuleName |
nvarchar(255) |
Nome assegnato alla regola nel file di definizione dell'applicazione (ADF). Se non vi è alcuna regola pronta per l'esecuzione, il valore è NULL. |
EventClassName |
nvarchar(255) |
Per le regole attivate da eventi, nome della classe di eventi correlata. Se la regola è una regola di sottoscrizione pianificata oppure se non vi è alcuna regola pronta per l'esecuzione, il valore è NULL. |
SubscriptionClassName |
nvarchar(255) |
Nome della classe di sottoscrizione correlata. Se la regola è una regola di cronologia degli eventi oppure se non vi è alcuna regola pronta per l'esecuzione, il valore è NULL. |
RuleFiringId |
int |
ID che identifica l'esecuzione della regola preparata. La colonna è NULL se non vi è alcuna esecuzione di regola pronta. |
EventBatchId |
bigint |
ID che identifica il batch di eventi correlato. Il valore è NULL se la regola non è una regola di cronologia degli eventi o di sottoscrizione degli eventi, se l'applicazione non elabora gli eventi in ordine oppure se non è disponibile una regola pronta per l'esecuzione. |
StartScanTime |
datetime |
Data e ora UTC di inizio di una regola di sottoscrizione pianificata preparata. La data e l'ora di inizio devono essere comprese tra i valori di QuantumStartTime e QuantumEndTime. Il valore è NULL se la regola non è una regola di cronologia degli eventi o di sottoscrizione degli eventi, se l'applicazione non elabora gli eventi in ordine oppure se non è disponibile una regola pronta per l'esecuzione. |
EndScanTime |
datetime |
Data e ora UTC di fine di una regola di sottoscrizione pianificata preparata. La data e l'ora di fine devono essere comprese tra i valori di QuantumStartTime e QuantumEndTime. Il valore è NULL se la regola non è una regola di cronologia degli eventi o di sottoscrizione degli eventi, se l'applicazione non elabora gli eventi in ordine oppure se non è disponibile una regola pronta per l'esecuzione. |
RemainingQuantumRuleFirings |
int |
Numero di esecuzioni di regole rimanenti per completare l'esecuzione della regola per il quantum. Questo numero comprende tutte le esecuzioni di regole preparate perché non sono state eseguite. Se non vi sono regole da preparare, il valore è 0. |
Il secondo set di risultati viene visualizzato solo se vi possono essere conseguenze per le cronologie. Il set di risultati è ordinato per PossibleChronicleReferenceByRule.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
PossibleChronicleReferenceByRule |
nvarchar(255) |
Nome della cronologia degli eventi associata a un'esecuzione di regola preparata. |
Osservazioni
Notification Services crea la stored procedure NSPrepareRuleFiring nel database dell'applicazione quando viene creata l'istanza. Quando si aggiorna l'applicazione, Notification Services ricompila la stored procedure.
Questa stored procedure è disponibile nello schema dell'applicazione, specificato dall'elemento SchemaName del file di definizione dell'applicazione (ADF). Se non si specifica un nome di schema, viene utilizzato lo schema predefinito dbo.
La stored procedure può essere eseguita solo quando il generatore è disattivato o la disattivazione è in sospeso.
La stored procedure può essere chiamata ripetutamente senza chiamare NSExecuteRuleFiring, ma lo stato nel database dell'applicazione non verrà modificato. L'unico modo per portare lo stato del database dell'applicazione oltre un'esecuzione di regola preparata, consiste nell'utilizzare la stored procedure NSExecuteRuleFiring o nell'avviare l'istanza.
Autorizzazioni
Le autorizzazioni di esecuzione vengono assegnate per impostazione predefinita ai membri dei ruoli di database NSGenerator e NSRunService, del ruolo predefinito del database db_owner e del ruolo predefinito del server sysadmin.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Esempi
A. Creazione del report sull'utilizzo delle cronologie e utilizzo dei limiti del quantum
Nell'esempio seguente viene illustrato come preparare il database per l'esecuzione delle regole pianificate dal quantum 1, creando un report sul possibile utilizzo delle cronologie degli eventi. L'esecuzione delle regole non ignora i limiti del quantum specificati nel file di definizione dell'applicazione (ADF).
L'applicazione utilizza le impostazioni predefinite di SchemaName, che prevedono l'inserimento di tutti gli oggetti dell'applicazione nello schema dbo.
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
EXEC dbo.NSPrepareRuleFiring
@ReportPossibleEventChronicleUsage = 1,
@DisableQuantumLimits = 0;
B. Utilizzo delle impostazioni predefinite
Nell'esempio seguente viene illustrato come preparare il database per l'esecuzione delle regole pianificate dal quantum 100 utilizzando le impostazioni predefinite della stored procedure.La stored procedure non crea un report sull'utilizzo delle cronologie degli eventi e ignora i limiti del quantum.
In questo esempio, la stored procedure (come tutti gli altri oggetti dell'applicazione) è inclusa nello schema Stock, come specificato nell'elemento SchemaName del file di configurazione dell'applicazione (ADF).
EXEC dbo.NSSetQuantumClock
@QuantumId = 100;
EXEC Stock.NSPrepareRuleFiring;
Vedere anche
Riferimento
NSExecuteRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Stored procedure di Notification Services (Transact-SQL)
NSExecuteRuleFiring (Transact-SQL)
Altre risorse
Report sulle prestazioni di Notification Services
SchemaName Element (ADF)