Un po 'di contesto:
all'inizio abbiamo scritto rapporti semplicemente "diretti", senza alcun suggerimento di blocco nelle query. Con i report più grandi ciò a volte potrebbe causare problemi di blocco. Al primo abbiamo rimediato questo utilizzando il WITH (NOLOCK)
suggerimento per le tabelle nella query.
Perché (a) è abbastanza invadente, e (b) è facile dimenticare il suggerimento per uno dei tavoli, si è passati ad una seconda impostazione approccio TRANSACTION ISOLATION LEVEL
al READ UNCOMMITTED
(che va bene) nella parte superiore di interrogazione di ogni set di dati.
Come puoi immaginare, è ancora facile dimenticare il suggerimento per uno dei set di dati. Quindi questo porta alla domanda:
Domanda: quali sono le opzioni per l'invio di NOLOCK
suggerimenti insieme alle query dei rapporti?
PS. Mi rendo conto che questo è in qualche modo un problema XY (con molte altre mie opzioni per X, come l'ottimizzazione della query, non fare report sul database operativo, ecc.), Ma ho comunque cercato di renderlo una domanda valida su se stesso .
Opzioni:
ecco le opzioni sopra menzionate, con opzioni aggiunte sulle quali sono curioso di sapere se funzionerebbero:
- Imposta un
WITH (NOLOCK)
suggerimento per ogni tabella. (invadente, molto facile da dimenticare) - Impostare il livello di isolamento su
READ UNCOMMITTED
per l'intera query. (ancora facile da dimenticare) - È possibile specificarlo a livello di report ? Ad esempio, assicurarsi che tutte le query del set di dati per un report vengano eseguite senza blocco.
- È possibile specificarlo a qualche altro livello SSRS ? Ad esempio, è possibile impostarlo per una determinata cartella di report o utilizzando un'estensione?
- È possibile specificarlo a livello di origine dati / stringa di connessione ? Ad esempio, tutti i report pertinenti utilizzano una determinata "origine dati senza blocco"?
- Relativo all'opzione precedente: forse è possibile specificare un suggerimento di blocco predefinito per uno specifico "no-lock-sql-user" (quello utilizzato nella connessione)?
- ???
Quali opzioni sono praticabili? Ci sono opzioni che mi sono persa?