Practico 2: Crear Job
Como es muy simple crear un job en SQL Server lo vamos a complicar un poco creando un SP que utilizaremos en el job, este SP lo que hace es reindexar una db, pero solo aquellos índices que tengan cierto grando de fragmentación.
use abeldb; go create procedure dbo.usp_reindex @db SYSNAME ,@fragPercent Int as -- Variables locales utilizados por el SP declare @cmd nVarChar(Max) ,@table SYSNAME ,@schema SYSNAME -- Vamos a crear un cursor donde vamos a alamacenar -- todas las idx que necesitan ser reindexados declare cursorIdx cursor for select distinct object_schema_name( object_id, database_id ) as schemaName ,object_name( object_id, database_id ) as tableName from sys.dm_db_index_physical_stats ( db_id(@db) ,null ,null ,null ,'Sampled' ) where avg_fragmentation_in_percent >= @fragPercent for read only open cursorIdx fetch cursorIdx into @schema, @table while @@FETCH_STATUS = 0 begin set @cmd = 'ALTER INDEX ALL ON ' + @db + '.' + @schema + '.' + @table + ' rebuild with (online = on)' --intentamos hacer un rebuild on line begin try exec @cmd end try begin catch begin set @cmd = 'ALTER INDEX ALL ON ' + @db + '.' + @schema + '.' + @table + ' rebuild with (online = off)' exec @cmd end end catch fetch cursorIdx into @schema, @table end close cursorIdx deallocate cursorIdx go
Luego de que creamos el SP, ya podemos crear el job, para eso vamos al SSMS, expandimos el nodo SQL Server agent, luego hacemos clic derecho sobre "trabajos" y seleccionamos "Nuevo trabajo".
Solapa General:

Ahora vamos a la solapa pasos y le damos a nuevo paso:

Ahora vamos a avanzado (siempre dentro de nuevo paso) y especificaciones el archivo de log

Aceptamos y ahora vamos a la solapa "programaciones", le damos a nuevo y ponemos:

Ahora aceptamos la programación y aceptamos la tarea, y ya estamos en condiciones de ejecutarla de forma manual o bien de forma automática a las 0 hora de cada día.

Comentarios recientes