Existe una forma sencilla de ejecutar un paquete DTS, utilizar SQL Server. De igual manera se haria usando la instruccion DTExec en un archivo .BAT. Vamos a llamar a DTExec desde cmdShell pero en un procedimiento almacenado.
Lo primero seria habilitar el uso de cmdShell para SQL Server, el cual es por defecto deshabilitado. Podemos hacerlo a traves de T-SQL de la siguiente manera:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
Una vez configurado nuestro servidor podemos hacer el llamado a cualquier aplicacion tipo shell cmd desde T-SQL.
Crearemos nuestro procedimiento:
CREATE PROCEDURE sp_EjecutarPaquete(@Paquete varchar(500) )
As
declare @Sql varchar(8000)
Set @Sql = 'dtexec /Ser (local) /U sa /P 123 /SQ ' + @Paquete
exec master.dbo.xp_cmdshell @Sql
Donde: Ser es el servidor, U usuario P password SQ el paquete.
Importante hacer notar que el paquete debera estar almacenado previamente dentro del servidor SQL.
Posteriormente solo tendremos que hacer el llamado al procedimiento almacenado para ejecutar el paquete, esto podria realizarse via programacion.
EXEC sp_EjecutarPaquete 'MiPaquete'
A traves de esta sentencia sencilla podriamos ejecutar un paquete desde nuestra aplicacion.
BUEN APUNTE, FÁCIL, PRÁCTICO Y ÚTIL
ResponderEliminarGenial, Me Sirvio muchisimo, es sencillo de implementar, pero se me presento un problema y talves me ayudas con esto, tengo una Tabla en Access 2003 y tengo un DTS que la importa a mi SQL Server 2008 pero Resulta ser que el DTS es de 32Bits y mi Instancia de SQL es en 64bits, existe alguna manera de ejecutar Este DTS de 32Bits desde un Procedimiento Almacenado en un SQL Manager de 64 Bits??
ResponderEliminarAgradeceria, Como seria mi cadena de conexion,de la sgte sintaxis " Set @Sql = 'dtexec /Ser (local) /U sa /P 123 /SQ ' + @Paquete" si ingreso con windows integrado
ResponderEliminar