¿SSRS bloquea la tabla cuando consulta?

9

Mi DBA senior me dijo que la ejecución de consultas SQL por defecto no bloquea la tabla.

Estaba teniendo algunos problemas con mi informe de SQL Server Reporting Services (SSRS) que parece estar teniendo algunos problemas con el bloqueo y algunos errores.

Busqué en Google pero no pude encontrar nada.

¿Los informes de SSRS bloquean las tablas que se están consultando?

¿Existe alguna documentación de MSDN que documente este comportamiento específicamente?

melaos
fuente
Tuvimos el mismo problema. Aunque técnicamente no es una respuesta a sus preguntas, hicimos una solución rápida al iniciar consultas de conjunto de datos con, SET TRANSACTION ISOLATION LEVELpor ejemplo, READ UNCOMMITTEDsi no le importa arriesgarse a algunas lecturas sucias.
Jeroen
Solo como una nota para el futuro, puede redirigir la carga de informes a secundarias legibles con un grupo de disponibilidad AlwaysOn en SQL 2012. msdn.microsoft.com/en-us/library/hh882437.aspx
wBob

Respuestas:

7

Respuesta corta: no

Más...

SQL Server no sabe que es SSRS enviándole una consulta. Por lo tanto, la consulta de SSRS se ejecutará como cualquier otra consulta.

Es más probable que el optimizador de consultas decida usar un bloqueo de tabla para la consulta SSRS. por supuesto, podría ser un problema diferente, pero esa es una pregunta diferente

gbn
fuente
mm, entonces, ¿SRSS intenta bloquear la tabla cuando consulta?
melaos
La declaración T-SQL da como resultado un tipo de bloqueo u otro, dependiendo de la declaración T-SQL. No depende de dónde se origina esa declaración (SSRS, ventana de consulta, aplicación, etc.)
Eric Higgins
4

mi superior me dijo que para la ejecución de consultas SQL por defecto no bloquea la tabla.

Esto es verdad. Sin embargo, no significa que una consulta no pueda bloquear una tabla.

¿El informe SSRS realmente bloqueará las tablas que se están consultando?

SSRS obtiene los datos utilizados para representar el informe ejecutando una consulta o procedimiento almacenado en la base de datos.

El desarrollador define esta consulta y puede terminar bloqueando una tabla (o tablas), según el nivel de aislamiento y cuántas filas están involucradas. (De hecho, puede haber casos en los que desee hacer esto a propósito ). La conclusión es que depende del desarrollador cómo funciona el bloqueo para la consulta. SSRS no puede resolver este problema por usted. Por eso no hay ninguna documentación.

Considere (por ejemplo):

  • Usar READ UNCOMMITTEDsi las lecturas sucias están bien
  • Habilitar y usar un nivel de aislamiento de instantánea
  • Envío de registros en modo de espera y consultas en ejecución en la copia de solo lectura
Jon Seigel
fuente
2

¿Cómo sabe que hay algún bloqueo cuando se ejecuta el informe? Le sugiero que verifique la consulta / proceso almacenado que es la fuente del informe y se asegure de que funcione bien por sí mismo.

Si está seguro de que la consulta de origen funciona bien, intente identificar el problema con el generador de perfiles del servidor SQL. El siguiente enlace podría ayudar:
/programming/9107383/sql-server-profiler-capture-calls-to-your-databases-stored-procs-during-ssrs

Cielo
fuente
porque estaba ejecutando el informe en algunos navegadores y el informe sigue recibiendo errores de que hay un proceso bloqueado con bloqueado.
melaos
En ese caso, lo más probable es que su informe intente leer datos que están bloqueados por otro usuario (por ejemplo, alguien está actualizando el mismo registro). Puede agregar "sin bloqueo" a todas las declaraciones "Seleccionar", si está bien leer datos no confirmados.
Cielo