SSRS blocca la tabella durante l'interrogazione?


9

Il mio DBA senior mi ha detto che l'esecuzione di query SQL per impostazione predefinita non blocca la tabella.

Stavo riscontrando alcuni problemi con il mio report SQL Server Reporting Services (SSRS) che sembra avere alcuni problemi con il blocco e alcuni errori.

Ho fatto un po 'di Google, ma non sono riuscito a trovare nulla.

I report SSRS bloccano le tabelle che vengono interrogate?

Esiste una documentazione MSDN che documenta specificamente questo comportamento?


Abbiamo avuto lo stesso problema. Anche se tecnicamente non è una risposta alle tue domande, abbiamo fatto una soluzione rapida avviando query del set di dati con, SET TRANSACTION ISOLATION LEVELad esempio, READ UNCOMMITTEDse non ti dispiace rischiare qualche lettura sporca.
Jeroen,

Proprio come una nota per il futuro, è possibile reindirizzare carico riferire al secondari leggibili con un gruppo di disponibilità AlwaysOn in SQL 2012. msdn.microsoft.com/en-us/library/hh882437.aspx
wBob

Risposte:


7

Risposta breve: No

Più a lungo...

SQL Server non sa che è SSRS che gli invia una query. Quindi la query da SSRS verrà eseguita come qualsiasi altra query.

È più probabile che Query Optimizer decida di utilizzare un blocco tabella per la query SSRS. ovviamente, potrebbe essere un problema diverso, ma questa è una domanda diversa


mm quindi SRSS tenta di bloccare la tabella quando esegue una query?
Melaos,

L'istruzione T-SQL genera un tipo di blocco o un altro, a seconda dell'istruzione T-SQL. Non dipende da dove ha origine quella dichiarazione (SSRS, finestra di query, app, ecc.)
Eric Higgins

4

il mio senior mi ha detto che per l'esecuzione di query SQL per impostazione predefinita non blocca la tabella.

Questo è vero. Tuttavia, ciò non significa che una query non può bloccare una tabella.

il rapporto SSRS bloccherà effettivamente le tabelle interrogate?

SSRS ottiene i dati utilizzati per eseguire il rendering del report eseguendo una query o una procedura memorizzata sul database.

Questa query è definita dallo sviluppatore e potrebbe finire per bloccare una (o più tabelle) tabelle, a seconda del livello di isolamento e del numero di righe coinvolte. (In effetti, potrebbero esserci casi in cui vorresti farlo apposta .) La linea di fondo è che spetta allo sviluppatore come funziona il blocco per la query. SSRS non può risolvere questo problema per te. Ecco perché non c'è documentazione.

Considera (ad esempio):

  • Usando READ UNCOMMITTEDse le letture sporche sono a posto
  • Abilitazione e utilizzo di un livello di isolamento dell'istantanea
  • Log shipping in modalità Standby ed esecuzione di query sulla copia di sola lettura

2

Come fai a sapere che c'è qualche blocco quando il report è in esecuzione? Ti suggerirei di controllare la query / proc memorizzata che è la fonte del rapporto e assicurarti che funzioni bene da sola.

Se si è certi che la query di origine funzioni correttamente, provare a individuare il problema utilizzando il profiler del server SQL. Il seguente link potrebbe essere d'aiuto:
/programming/9107383/sql-server-profiler-capture-calls-to-your-database-stored-procs-during-ssrs


perché stavo eseguendo il rapporto su alcuni browser e il rapporto continua a ricevere errori che indicano che il processo è bloccato e bloccato.
Melaos,

In tal caso, molto probabilmente il tuo rapporto sta provando a leggere un dato bloccato da un altro utente (ad es. Qualcuno sta aggiornando lo stesso record). È possibile aggiungere "senza blocco" a tutte le istruzioni "Seleziona", se la lettura di dati non confermati è corretta.
Sky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.