¿Alguien sabe de alguna desventaja de MARS (conjuntos de resultados activos múltiples)? ¿Alguien sabe de alguna razón por la que uno debería evitar el uso de MARS, como los casos en los que los cursores son más útiles que MARS?
Respuestas:
Aparentemente, hay al menos dos inconvenientes conocidos (potenciales) (de este (1) blog del equipo ):
Obviamente, esto puede causar problemas potenciales para cualquier sistema heredado que no fue diseñado para ejecutarse con un diseño habilitado para MARS: "el código existente optimizado para ejecutarse en el mundo que no es MARS puede mostrar una ligera caída en el rendimiento cuando se ejecuta sin modificar con MARS".
“Con MARS puede enviar varios lotes de declaraciones múltiples al servidor. El servidor intercalará la ejecución de dichos lotes, lo que significa que si los lotes cambian el estado del servidor a través de declaraciones SET o USE, por ejemplo, o usan declaraciones de administración de transacciones TSQL (BEGIN TRAN, COMMIT, ROLLBACK), tanto usted como el servidor pueden confundirse sobre cuál es tu intención real ".
Todavía tengo que probar un diseño habilitado para MARS, pero estoy muy cerca de hacerlo en mi proyecto actual. Tenemos un pequeño problema con las operaciones de consulta competitivas (y en ocasiones dependientes) (como datos de configuración de carga diferida de la misma base de datos que está ejecutando un conjunto de registros activo).
Hay más información en el sitio de MSDN (2) aquí.
[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx ]
[(2)http://msdn.microsoft.com/en-us/library/ms131686.aspx ]
¿dependiendo de qué? no hay desventajas reales.
no admiten puntos de guardado de transacciones. pero no creo que esto sea una desventaja.