Conseguir una rara excepción de ExecuteScalar() que no puedo encontrar ninguna ayuda en la web:

No puede continuar la ejecución debido a que la sesión está en matar estado.

Estoy usando SqlConnection/SqlCommand

El comando es un básico INSERT INTO… con 105 columnas (y 105 parámetros para establecer la columna de datos), seguido por un selecto SCOPE_IDENTITY();

Lo he comprobado en la cadena de conexión – es correcto y la conexión está abierta.

Ni siquiera estoy seguro de lo que este error me está diciendo que me sabe dónde empezar a buscar en este.

Entonces, ¿qué hace exactamente este error significa? ¿Cómo es una sesión de conseguir en el matar estado para empezar?

Código es bastante sencillo:

using (SqlConnection conn = new SqlConnection(connString))
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand(@"INSERT INTO VendorNote (VendorId, AdminComment...) VALUES (@VendorId, @AdminComment, ...); SELECT SCOPE_IDENTITY(); ", conn))
    {
        cmd.Parameters.AddWithValue("@VendorId", VendorId);
        cmd.Parameters.AddWithValue("@AdminComment", AdminComment);
        Id = (int) cmd.ExecuteScalar();
    }
}
  • Se va a crear la conexión sólo para este comando, o tratando de compartir la conexión entre varios de operaciones?
  • Puedes mostrar el código?
  • No es un problema con la cadena de conexión o la sintaxis de la consulta. Incluso si puedo reemplazar mi consulta con una simple instrucción select me sale este error. También – con esta cadena de conexión de todo el app con éxito. Así que de alguna manera la sesión debe ser conseguir dañado o algo. Estoy de vuelta de seguimiento el código que se ejecuta antes de que este derecho ahora a ver si puedo reducirlo.

3 Comentarios

  1. 7

    DE ENCONTRAR!

    Hubo una violación de la restricción en la consulta que fue la causa de la ejecución de un fallo en la consulta. En lugar de informar de que la información de la excepción – se informa de que la sesión fue en un «matar estado» (supongo ) porque la consulta fue terminado prematuramente.

    Nunca he visto este error antes de que – normalmente restricción de errores y tienen algo más útil en la excepción.

    Así que cualquiera recibiendo este error – REALMENTE comprobar sobre su consulta para asegurarse de que es válido.

  2. 2

    Podría ser debido a una Siempre En el Grupo de Disponibilidad ‘de Conmutación por error’…
    Siempre que tengo la ejecución de la consulta, conectado a un AG Oyente, y hay una conmutación por error, me sale un SqlException tener el Mensaje de ‘No puede continuar la ejecución debido a que la sesión está en matar estado.‘…

  3. 1

    El código debe tener este aspecto:

    const string sqlString = "INSERT INTO dbo.Table ( ....) " +
                             "               VALUES ( .... );" +
                             "SELECT SCOPE_IDENTITY();";
    using (conn)
    {
        using (var cmd = new SqlCommand(sqlString, conn))
        {
            cmd.Parameters.AddWithValue("@param", param);
    
            cmd.CommandType = CommandType.Text;
            conn.Open();
            return (int) (decimal) cmd.ExecuteScalar();
    
        }
    }

    Pero tenga en cuenta en algún momento un procedimiento almacenado será más apropiado

    • Y por qué es que el cambio es necesario?
    • su pasado un tiempo mi amigo, debo haber hecho esto para hacer la conexión desechables

Dejar respuesta

Please enter your comment!
Please enter your name here