Getting “La operación de pasos múltiples generó errores. Compruebe cada valor de estado ". Error al usar ADO con SQL Server 2008
Estamos en el proceso de migrar nuestro cuadro SQL 2000 a SQL 2008. Pero nos encontramos con un problema; cuando se devuelve un conjunto de resultados (filas o no) mediante una consulta que tiene UNION. Más adelante en el código intentamos agregar una nueva fila y asignarle un campo, pero debido a que se usó UNION, cuando intentamos asignar un valor al campo, nos da unMultiple-step operation generated errors. Check each status value.
error. Probamos el siguiente código en Windows XP y Windows 7 y obtuvimos el mismo resultado. Pero cuando cambiamos nuestra cadena de conexión para volver a apuntar a nuestro cuadro SQL 2000, ya no recibimos ese error.
El siguiente ejemplo muestra el problema que estamos teniendo.
var c = new ADODB.Connection();
var cmd = new ADODB.Command();
var rs = new ADODB.Recordset();
object recordsAffected;
c.Open("Provider=SQLOLEDB;Server=*****;Database=*****;User Id=*****;Password=*****;");
cmd.ActiveConnection = c;
cmd.CommandType = ADODB.CommandTypeEnum.adCmdText;
cmd.CommandText = "create table testing2008 (id int)";
cmd.Execute(out recordsAffected);
try {
cmd.CommandText = "select * from testing2008 union select * from testing2008";
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
rs.Open(cmd, Type.Missing, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic, -1);
rs.AddNew();
rs.Fields["id"].Value = 0; //throws exception
rs.Save();
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
finally {
cmd.CommandText = "drop table testing2008";
cmd.Execute(out recordsAffected);
c.Close();
}