Cómo crear trabajos en la edición SQL Server Express

81

¿Alguien podría explicarme cómo crear puestos de trabajo en la SQL Server Expressedición?

Perla
fuente
6
Si se refiere a trabajos del Agente SQL, esa funcionalidad no está disponible en la edición Express. Consulte la respuesta a esta pregunta para conocer otras posibilidades: stackoverflow.com/questions/3788583/…
8kb
La edición Express es compatible con SQL Server Broker y puede crear un mecanismo personalizado como aquí
Lukasz Szozda

Respuestas:

123

SQL Server Express no incluye el Agente SQL Server , por lo que no es posible crear simplemente trabajos del Agente SQL.

Lo que puede hacer es:
Puede crear trabajos "manualmente" creando archivos por lotes y archivos de secuencias de comandos SQL, y ejecutándolos a través del Programador de tareas de Windows.
Por ejemplo, puede hacer una copia de seguridad de su base de datos con dos archivos como este:

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

Simplemente coloque ambos archivos en la misma carpeta y ejecute el archivo por lotes a través del Programador de tareas de Windows.

El primer archivo es solo un archivo por lotes de Windows que llama a la utilidad sqlcmd y pasa un archivo de script SQL.
El archivo de script SQL contiene T-SQL. En mi ejemplo, es solo una línea para hacer una copia de seguridad de una base de datos, pero puede poner cualquier T-SQL dentro. Por ejemplo, podría realizar algunas UPDATEconsultas en su lugar.


Si los trabajos que desea crear son para copias de seguridad, mantenimiento de índices o comprobaciones de integridad, también puede utilizar la excelente solución de mantenimiento de Ola Hallengren.

Consiste en un montón de procedimientos almacenados (y trabajos del Agente SQL para las ediciones que no son Express de SQL Server), y en las preguntas frecuentes hay una sección sobre cómo ejecutar los trabajos en SQL Server Express:

¿Cómo empiezo con la solución de mantenimiento de SQL Server en SQL Server Express?

SQL Server Express no tiene Agente SQL Server. Por lo tanto, la ejecución de los procedimientos almacenados debe programarse mediante archivos cmd y tareas programadas de Windows. Sigue estos pasos.

SQL Server Express no tiene Agente SQL Server. Por lo tanto, la ejecución de los procedimientos almacenados debe programarse mediante archivos cmd y tareas programadas de Windows. Sigue estos pasos.

  1. Descarga MaintenanceSolution.sql.

  2. Ejecute MaintenanceSolution.sql. Este script crea los procedimientos almacenados que necesita.

  3. Cree archivos cmd para ejecutar los procedimientos almacenados; por ejemplo:
    sqlcmd -E -S. \ SQLEXPRESS -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C: \ Backup ', @BackupType =' FULL '" -b -o C: \ Log \ DatabaseBackup.txt

  4. En Tareas programadas de Windows, cree tareas para llamar a los archivos cmd.

  5. Programa las tareas.

  6. Inicie las tareas y verifique que se completen correctamente.

Christian Specht
fuente
1
¿Dónde debo especificar la información de inicio de sesión?
HasanG
1
@ HasanGürsoy Si está creando una tarea programada que ejecuta SQLCMD (con o sin un archivo BAT), le recomendaría que use el parámetro "-E" de SQLCMD, para la autenticación de Windows. Para que eso funcione, defina un inicio de sesión de SQL Server, para el usuario de Windows que es el propietario de su tarea programada de Windows. Si no está claro en qué inicio de sesión de Windows se ejecuta la tarea, coloque "WHOAMI" (comando de DOS) en el archivo BAT y capture la salida del archivo BAT, para ver quién está ejecutando.
Doug_Ivison
@ HasanGürsoy O, para la autenticación de SQL Server, pondría la contraseña en la tarea programada de Windows (donde los permisos gobiernan quién puede leerla), en lugar de ponerla en un archivo en cualquier lugar. Va en la línea de comando del archivo BAT. Si es el primer parámetro que se pasa al archivo BAT, dentro del archivo BAT puede hacer referencia a él como% 1, en la línea SQLCMD, por ejemplo.
Doug_Ivison
40

La funcionalidad de crear trabajos del Agente SQL no está disponible en SQL Server Express Edition. Una alternativa es ejecutar un archivo por lotes que ejecute un script SQL utilizando el Programador de tareas de Windows.

Para hacer esto, primero cree un archivo por lotes llamado sqljob.bat

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

Reemplazar el servername, username, passwordy pathcon el suyo.

Luego cree el archivo de script SQL llamado sqljob.sql

USE [databasename]
--T-SQL commands go here
GO

Reemplace el [databasename]con el nombre de su base de datos. El USEy GOes necesario cuando escribe el script SQL.

sqlcmdes una utilidad de línea de comandos para ejecutar scripts SQL. Después de crear estos dos archivos, ejecute el archivo por lotes utilizando el Programador de tareas de Windows.

NB: Se publicó casi la misma respuesta para esta pregunta antes. Pero sentí que estaba incompleto ya que no especificaba sobre el uso de la información de inicio de sesión sqlcmd.

geo
fuente
¿Dónde guardaría ese sqljob.sql? y ¿cómo puedo poner cuándo se ejecutará?
WTFZane
1
@WTFZane, no importa, siempre que la ubicación esté disponible para quien sea que esté ejecutando el archivo por lotes. (en el script anterior, reemplácelo path of sqljob.sqlcon cualquier ubicación que use). Recuerde que un *.sqlarchivo aquí no es más que un archivo de texto.
Abel