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:

Crear tareas

 

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

Nuevo paso

 

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

Nuevo paso

 

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

Programaciones

 

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.

 

Tags for Practico 2: Crear Job