2011-06-30 26 views
5

Me gustaría saber si es posible ejecutar una consola C# o una aplicación ASP.NET periódicamente.Ejecutar una aplicación C# periódicamente para actualizar la base de datos

Mi propósito es automáticamente hacer los siguientes pasos una vez al mes :

1) consulta una base de datos Fuente.

2) Take el resultado de la consulta al (1) y manipular ellos mediante el uso LINQ y C#, por ejemplo comprobando si un cierto valor ya está presente en la base de datos de destino.

3) tienda los datos derivados en una base de datos de destino.

La aplicación tiene que ejecutar en un Windows Server 2008, la base de datos Fuente se encuentra en un servidor SQL 2005 y la base de datos de destino se encuentra en un servidor SQL 2008 .

Intenté crear, por ejemplo, un paquete SSIS pero no funcionará, ya que no puedo agregar ninguna lógica.

¿Alguien tiene alguna sugerencia?

+3

Esto se puede hacer en SSIS. Tienes la tarea de script para escribir tu script. – vikramjb

+1

¿Por qué necesita usar C#? ¿Podría encapsular esta lógica en uno o más procedimientos almacenados y programarlos con el Agente SQL? – Yuck

+2

Alternativamente, también puede crear una aplicación de línea de puntos de línea de comandos y programarla a través de Tarea programada o agente de SQL Server. – vikramjb

Respuesta

10

Debe crear una tarea programada para realizar esto. Mira aquí: Panel de control -> Herramientas administrativas -> Programador de tareas

Y como dijiste, sí, una aplicación de consola es muy recomendable.


Editar

Estoy de acuerdo con @andynormancx en que SSIS puede haber una mejor manera de hacer esto; sin embargo, se acepta comúnmente crear una aplicación de consola ejecutada por una tarea programada. Aquí es donde se reduce a sus recursos, tiempo y experiencia: puede o no valer la pena el esfuerzo de aprender lo suficiente sobre SSIS para crear un paquete en SqlServer para hacer lo que necesita. Si alguien fuera a dar una respuesta completa usando SSIS para realizar esta tarea, ciertamente me inclinaría ante esa experiencia.

+3

+1 - Me gustaría agregar que debes hacer de esto una aplicación de consola. – Keith

+0

SI la lógica es simple, también puede crear un procedimiento almacenado y ejecutarlo como un trabajo dentro de sql. Pero el programador de tareas sería el mejor – fluf

+0

@Keith - acuerdo – IAbstract

-1

Puede hacerlo, por supuesto. Pero recomendaría convertirlo en un servicio de Windows.

+3

¿Por qué recomendaría un servicio de Windows? – IAbstract

+1

@IAbstract - También recomendaría que sea un servicio de Windows, ya que se ejecutará en segundo plano para que el usuario no tenga que preocuparse por ejecutar el código cada mes. Configúralo para que se ejecute a la vez y no te preocupes por eso. ¿Por qué no lo escribirías como un servicio? – Jethro

+2

Mucho, mucho mejor usar una tarea programada que tener un servicio dedicado para solo ejecutar una tarea una vez al mes. Y mientras que escribir un servicio de Windows es mucho más fácil hoy en día, ejecutar una tarea a través del programador sigue siendo mucho menos complicado. – andynormancx

3

Puede crear una tarea programada que llame a su .exe en un intervalo predefinido.

Ir al panel de control y seleccione tarea programada y luego agregar tarea programada

-2

Si realmente desea hacerlo en C# Le sugiero que escriba un servicio, su código es casi idéntica a una aplicación normal de la consola.

Consulte el siguiente enlace para comenzar. C# Service step by step

+1

Un servicio de Windows es excesivo para algo como esto. – IAbstract

4

Puede crear una nueva Tarea programada . Sería mucho más fácil y no es necesario reinventar la rueda.

Cuestiones relacionadas