2009-02-04 22 views

Respuesta

71

Se han agregado varios Conjuntos de resultados activos (MARS) específicamente para este tipo de operación para que no tenga que tener dos conexiones abiertas al mismo tiempo para poder leer desde un SqlDataReader Y ejecutar lotes adicionales.

MARS es compatible con SQL Server 2005 y posterior. Citando documentos de MSDN:

Antes de la introducción de múltiples conjuntos de resultados activos (MARS), los desarrolladores tuvieron que utilizar cualquiera de varias conexiones o cursores de servidor para resolver ciertos escenarios.

Para más información ver:

MSDN Library - MARS Overview

Ejemplo resuelto la lectura y actualización de datos:

MSDN Library - Manipulating Data (MARS) abajo desplazarse a 'Lectura y actualización de datos con MARS'

+0

+1 por mencionar SQL Server 2005 y superior – pilotcam

17

Hasta donde sé, la razón por la que se agregó MARS, entonces sí, creo que debería usarla.

0

La mejor manera de probar esto es disparar SQLServer Profiler, y ver qué sucede realmente en el lado del servidor.

Supongo que no será mejor ya que está utilizando ExecuteNonQuery(). Entonces, de hecho, no trabajas con resultados múltiples.

+5

Eso es lo que pensé cuando escribí el código, pero si no tengo MultipleActiveResultSets = True, sigo recibiendo un "Ya hay un DataReader abierto asociado con este Comando que debe cerrarse primero". excepción en ExecuteNonQuery. – Sprintstar

Cuestiones relacionadas