¿Por qué es importante utilizar vistas de SQL Server compatibles con los informes SCCM?

Mientras estaba en la Midwest Management Summit en el Mall of America (MMSMOA) en mayo, surgió el tema de las vistas de SQL Server compatibles. Alguien mencionó una forma fácil de convertir consultas WQL en consultas SQL. Sin embargo, este "consejo" no creó vistas compatibles con SQL Server y no todos parecían darse cuenta de que era una mala idea. Para arrojar más luz sobre este tema, en esta publicación proporciono algunos antecedentes sobre por qué solo debe usar vistas compatibles de SQL Server y, lo que es más importante, qué sucede cuando no las usa.

Si desea ver qué vistas y funciones de SQL Server son compatibles con el equipo de producto SCCM, eche un vistazo a esta publicación de blog que publiqué poco después de MMSMOA, "¿Cuáles son las vistas de SQL Server admitidas para usar con los informes SCCM?"

¿Por qué son importantes las vistas de SQL Server compatibles?

Hay tres razones principales por las que siempre desea utilizar vistas y funciones de SQL Server compatibles, y debe mantenerse alejado de las no compatibles con los informes de System Center Configuration Manager (SCCM).

Son:

1. Bloqueo de transacciones

2. Otorgar permisos de dbo a los usuarios

3. Cambio de permisos en una mesa / vista / etc.

Bloqueo de transacciones

SCCM almacena datos en la base de datos de SQL Server y un problema que puede surgir cuando se accede a los datos desde la base de datos de SQL Server se llama "Bloqueo de transacciones". ¿Por qué es esto importante para un administrador SCCM y, en particular, para los informes SCCM? Esta es la respuesta simple: cuando se ejecuta una consulta de SQL Server no compatible para un informe, se crea un bloqueo en la tabla que se está consultando. Este bloqueo PUEDE impedir que el propio SCCM actualice o inserte datos en la base de datos, o incluso puede bloquear otras consultas.

Para obtener más información, consulte este Desbordamiento de pila correo, Comprensión de LOCKS de SQL Server en consultas SELECT.

Los documentos Microsoft (ver enlace a continuación) también son buenos para explicar este problema:

En cualquier base de datos, la mala gestión de las transacciones a menudo conduce a conflictos y problemas de rendimiento en sistemas que tienen muchos usuarios. A medida que aumenta la cantidad de usuarios que acceden a los datos, se vuelve importante tener aplicaciones que utilicen las transacciones de manera eficiente.

Más tarde, bajo Conceptos básicos de bloqueo y control de versiones de filas, los doctores dicen:

Cada transacción solicita bloqueos de diferentes tipos en los recursos, como filas, páginas o tablas, de los que depende la transacción. Los bloqueos impiden que otras transacciones modifiquen los recursos de una manera que pueda causar problemas a la transacción que solicita el bloqueo. Cada transacción libera sus bloqueos cuando ya no depende de los recursos bloqueados.

En pocas palabras, todo esto dice que no hay dos consultas que puedan usar el mismo objeto al mismo tiempo. Para obtener más detalles, consulte los documentos de Microsoft SQL Server: Guía de control de versiones de filas y bloqueo de transacciones.

Solución de bloqueo de transacciones

Para resolver este problema (bloqueo de transacciones), el equipo SCCM utiliza la sugerencia de consulta (Nolock) dentro de las vistas compatibles de SQL Server. La sugerencia de consulta (Nolock) evita que se produzca este problema.

Permisos

¿Te ha pasado esto alguna vez? Usted crea un informe con vistas de SQL Server no compatibles, lo prueba y luego lo carga en su sitio SSRS. Funciona bien para usted, por lo que le da el informe a otra persona y, "uh-oh", lo ejecuta y recibe el siguiente mensaje:

  • Se ha producido un error al procesar el informe! (rsProcessingAborted)
    • Error en la ejecución de la consulta para el conjunto de datos 'DataSet1'. (rsErrorExecutingCommand)
      • Se denegó el permiso SELECT en el objeto 'vSMS_Advertisement', base de datos 'CM_CB1', esquema 'dbo'.

Una vez que determina que se trata de un problema de permisos, realiza una de dos malas ideas. Tu tampoco conceder permisos de dbo a un usuario o cambiar los permisos en una tabla / vista / etc.

Otorgar permisos DBO a un usuario

De forma predeterminada, solo las cuentas del propietario de la base de datos (DBO) o del administrador del sistema (SA) dentro de SQL Server tienen acceso a todos los objetos de la base de datos. Dado que las vistas, funciones, etc. de SQL Server no compatibles no tienen permisos asignados, solo las cuentas designadas como DBO o SA pueden acceder a los datos de esas vistas, tablas, etc. datos dentro de las vistas, tablas, etc. una de sus opciones es otorgarles derechos SA o DBO sobre la base de datos.

Obviamente, esta es una mala idea debido a los riesgos de seguridad inherentes. La única ventaja es que este método no tiene ningún efecto cuando SCCM se actualiza a una versión superior en una fecha posterior.

Vistas de SQL Server admitidas: permisos

Cambio de permisos en una mesa, vista, etc.

Su otra opción es menos riesgosa, pero aún tiene problemas de seguridad asociados. Simplemente puede ajustar los permisos de "seleccionar" o "ejecutar" en las vistas, tablas, etc. Aunque este método representa un riesgo menor para la seguridad, puede impedirle actualizar a una versión más reciente de SCCM en una fecha posterior. ¿Por qué? No se admite la edición de la base de datos SCCM. Además, ¿realmente desea cambiar los permisos en todas las vistas, tablas, etc. que desea usar?

Vistas de SQL Server compatibles

¿Cuáles son los beneficios de utilizar vistas y funciones de SQL Server compatibles con los informes SCCM? Además de evitar los problemas de permisos y bloqueo de transacciones antes mencionados, aquí hay un par de razones más:

· Administración basada en roles (RBA). Puede aprovechar RBA para consultas. Esto significa que si alguien no debería ver los datos, con un informe de RBA, ¡no los verá!

· Ajustes de rendimiento. Microsoft está poniendo mucho esfuerzo estos días en ajustar SQL Server, por lo que el rendimiento es más rápido y mejor. En este sentido, solo están actualizando las vistas compatibles de SQL Server. De hecho, las funciones de RBA son donde están poniendo la mayor parte de su esfuerzo. Puedes ver lo que quiero decir en esta publicación, "Consultas RBA y no RBA: ¿Cuándo es más lento en realidad más rápido?"

¿Qué vistas y funciones de SQL Server son compatibles con Microsoft? La respuesta corta es cualquier objeto de SQL Server con permisos de "seleccionar" o "ejecutar" asignados al rol smsschm_users. Para obtener la lista completa, consulte la publicación de mi blog, "¿Cuáles son las vistas de SQL Server admitidas para usar con los informes SCCM?? "

Si tiene alguna pregunta sobre las vistas y funciones de SQL Server admitidas, no dude en ponerse en contacto conmigo en @GarthMJ.

Vea cómo Right Click Tools está cambiando la forma en que se administran los sistemas.

Aumente la productividad de inmediato con nuestra versión limitada y gratuita de la edición Community.

Comience con Right Click Tools hoy:

Compartir este:

Ayuda

  • Este campo es para fines de validación y no debe modificarse.

Contacto

  • Este campo es para fines de validación y no debe modificarse.
es_MXSpanish