Principales respuestas
Ejecucion condicional de un paquete en SSIS

Pregunta
-
Respuestas
-
hola,
Si ya tu tienes desarrollado tu poquete y solo te falta hacer la condicion
Bueno te pongo un ejemplo simple de como puede hacerlo espero que te pueda ayudar
Parte 1
Esta parte es donde lo vas a colocar el boton
SqlConnection SQLconn = new SqlConnection(conection);SQLconn.Open();SqlCommand cmd = new SqlCommand("SELECT campo FROM TABLA where id = @id", SQLconn);cmd.Parameters.AddWithValue("@id", valor);SqlDataReader reader = cmd.ExecuteReader();
try{
if (reader.HasRows){
int valor = reader["campo"].ToString();
if (valor == 1){// AQUI ES DONDE TU VAS A CORRRE EL PAQUETE SI SE COMPLE LA CONDICION.RunDTSPackage("Nombre del DTS","archivo",ruta);}
}
}catch (Exception){
}finally{SQLconn.Close();}
Parte 2
Este es metodo donde tu vas a ejecutar el Packete
private void RunDTSPackage(string DTS, string FileName, string Path){
Application app = new Application();Package package2 = DAL.NuevoPaquete(DTS);Variables vars = package2.Variables;
string Path2= Path + FileName;vars["FileName"].Value = Path;vars["Path"].Value = Path2;
try{switch (result2.ToString()){case "Success":Resultado = "Archivo subido y validado correctamente.";break;case "Failure":Resultado = "Error cargando archivo";foreach (DtsError pkgError in package2.Errors){Resultado = Resultado + "Description {0} " + pkgError.Description;lblMensaje.Text = Resultado;}
break;default:Resultado = "Error cargando archivo";foreach (DtsError pkgError in package2.Errors){
Resultado = Resultado + "Description {0} " + pkgError.Description;lblMensaje.Text = Resultado;
}break;}
package2.Dispose();}catch (NullReferenceException ex){Resultado = ex.Message;}finally{
}}
Parte 3
Esta es la parte donde tu le pasa el Sevidor y usuario y passwork
//Preparar el objeto Package y devolverlo listo.public static Package NuevoPaquete(string dtsName){Application app = new Application();Package p = new Package();p = app.LoadFromSqlServer(dtsName, ConfigurationManager.AppSettings["Server"].ToString(), ConfigurationManager.AppSettings["User"].ToString(), ConfigurationManager.AppSettings["Pass"], null);
return p;
}
Nota
Espero que te se de utilidad Suerte..
Enmanuel Grullard@Developer ASP.NET,C#.NET- Propuesto como respuesta Enmanuel Grullard miércoles, 15 de diciembre de 2010 19:25
- Marcado como respuesta Eduardo PorteschellerModerator viernes, 17 de diciembre de 2010 12:35
-
hola,
No ,, Mira este link te busque te puede ayudar hay te explico con algunos graficos Suerte
http://www.codeproject.com/KB/database/CallSSISFromCSharp.aspx
Enmanuel Grullard@Developer ASP.NET,C#.NET- Propuesto como respuesta Enmanuel Grullard miércoles, 15 de diciembre de 2010 19:25
- Marcado como respuesta Eduardo PorteschellerModerator viernes, 17 de diciembre de 2010 12:35
-
Hola.
Lo más limpio es condicionarlo con una variable. Para ello, creas una tarea de ejecución de SQL que lea el valor en cuestión de la tabla y lo almacene en una variable:
select Parametro from MiTabla where...
Para ello, debes configurar la tarea para que el resultado sea un Single Row (propiedad ResultSet). Y en la pestaña ResultSet, añades uno y le pones de nombre "Parametro" y lo almacenas en una nueva variable (ojo, el Scope ha de ser el propio paquete), a la que le tienes que dar un nombre, por ejemplo "Condicion".
Este paso iría al principio de todo, lo unes al siguiente paso (el primer paso de tu dtsx actual) con un paso de "Success", la flecha verde. Sobre esa flecha verde, haces click derecho + edit y en el formulario que aparezca, seleccionas "Constraint and Expression" en el combo "Evaluation operation". En "Expression" pones "@Condicion==1".
De esta forma, sólo si el campo de la tabla vale 1, se ejecutarán el resto de pasos del paquete.
Si no lo logras, nos dices.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator miércoles, 15 de diciembre de 2010 20:35
- Marcado como respuesta Eduardo PorteschellerModerator viernes, 17 de diciembre de 2010 12:35
Todas las respuestas
-
-
-
hola,
Si ya tu tienes desarrollado tu poquete y solo te falta hacer la condicion
Bueno te pongo un ejemplo simple de como puede hacerlo espero que te pueda ayudar
Parte 1
Esta parte es donde lo vas a colocar el boton
SqlConnection SQLconn = new SqlConnection(conection);SQLconn.Open();SqlCommand cmd = new SqlCommand("SELECT campo FROM TABLA where id = @id", SQLconn);cmd.Parameters.AddWithValue("@id", valor);SqlDataReader reader = cmd.ExecuteReader();
try{
if (reader.HasRows){
int valor = reader["campo"].ToString();
if (valor == 1){// AQUI ES DONDE TU VAS A CORRRE EL PAQUETE SI SE COMPLE LA CONDICION.RunDTSPackage("Nombre del DTS","archivo",ruta);}
}
}catch (Exception){
}finally{SQLconn.Close();}
Parte 2
Este es metodo donde tu vas a ejecutar el Packete
private void RunDTSPackage(string DTS, string FileName, string Path){
Application app = new Application();Package package2 = DAL.NuevoPaquete(DTS);Variables vars = package2.Variables;
string Path2= Path + FileName;vars["FileName"].Value = Path;vars["Path"].Value = Path2;
try{switch (result2.ToString()){case "Success":Resultado = "Archivo subido y validado correctamente.";break;case "Failure":Resultado = "Error cargando archivo";foreach (DtsError pkgError in package2.Errors){Resultado = Resultado + "Description {0} " + pkgError.Description;lblMensaje.Text = Resultado;}
break;default:Resultado = "Error cargando archivo";foreach (DtsError pkgError in package2.Errors){
Resultado = Resultado + "Description {0} " + pkgError.Description;lblMensaje.Text = Resultado;
}break;}
package2.Dispose();}catch (NullReferenceException ex){Resultado = ex.Message;}finally{
}}
Parte 3
Esta es la parte donde tu le pasa el Sevidor y usuario y passwork
//Preparar el objeto Package y devolverlo listo.public static Package NuevoPaquete(string dtsName){Application app = new Application();Package p = new Package();p = app.LoadFromSqlServer(dtsName, ConfigurationManager.AppSettings["Server"].ToString(), ConfigurationManager.AppSettings["User"].ToString(), ConfigurationManager.AppSettings["Pass"], null);
return p;
}
Nota
Espero que te se de utilidad Suerte..
Enmanuel Grullard@Developer ASP.NET,C#.NET- Propuesto como respuesta Enmanuel Grullard miércoles, 15 de diciembre de 2010 19:25
- Marcado como respuesta Eduardo PorteschellerModerator viernes, 17 de diciembre de 2010 12:35
-
-
hola,
No ,, Mira este link te busque te puede ayudar hay te explico con algunos graficos Suerte
http://www.codeproject.com/KB/database/CallSSISFromCSharp.aspx
Enmanuel Grullard@Developer ASP.NET,C#.NET- Propuesto como respuesta Enmanuel Grullard miércoles, 15 de diciembre de 2010 19:25
- Marcado como respuesta Eduardo PorteschellerModerator viernes, 17 de diciembre de 2010 12:35
-
Hola.
Lo más limpio es condicionarlo con una variable. Para ello, creas una tarea de ejecución de SQL que lea el valor en cuestión de la tabla y lo almacene en una variable:
select Parametro from MiTabla where...
Para ello, debes configurar la tarea para que el resultado sea un Single Row (propiedad ResultSet). Y en la pestaña ResultSet, añades uno y le pones de nombre "Parametro" y lo almacenas en una nueva variable (ojo, el Scope ha de ser el propio paquete), a la que le tienes que dar un nombre, por ejemplo "Condicion".
Este paso iría al principio de todo, lo unes al siguiente paso (el primer paso de tu dtsx actual) con un paso de "Success", la flecha verde. Sobre esa flecha verde, haces click derecho + edit y en el formulario que aparezca, seleccionas "Constraint and Expression" en el combo "Evaluation operation". En "Expression" pones "@Condicion==1".
De esta forma, sólo si el campo de la tabla vale 1, se ejecutarán el resto de pasos del paquete.
Si no lo logras, nos dices.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/- Propuesto como respuesta Alberto López Grande (qwalgrande)Moderator miércoles, 15 de diciembre de 2010 20:35
- Marcado como respuesta Eduardo PorteschellerModerator viernes, 17 de diciembre de 2010 12:35