lunes, 3 de noviembre de 2014

Triggers DDL

Los triggers DDL se activan cuando se ejecuta una setencia DDL, como puede ser un ALTER TABLE, CREATE TABLE, etc. Por ejemplo, si quisieramos mantener nuestro codigo de Procedimiento Almacenados para que nadie pueda modificar, podemos crear el siguiente Trigger, es cual no permitirá alterar o borrar ningún Procedimiento Almacenado y funciones.

CREATE TRIGGER [TR_Rutinas]
ON DATABASE FOR alter_procedure, alter_function, drop_procedure, drop_function
AS
BEGIN

    RAISERROR ('Unknow Error' , 16, 1)

    ROLLBACK TRANSACTION 

END

Cuando se pretenda modificar o borrar una rutina, lanzará Unknow Error.

Reparar Base de Datos SUSPECT

Recientemente tuvimos el problema de una Base de Datos en estado SUSPECT. Para recuperarla hay que ejecutar los siguientes comandos:

EXEC sp_resetstatus DB;
ALTER DATABASE DB SET EMERGENCY;
DBCC CHECKDB (DB) WITH NO_INFOMSGS, ALL_ERRORMSGS;
ALTER DATABASE DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB (DB, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
ALTER DATABASE DAPA SET MULTI_USER;

Donde DB, es la Base de Datos a reparar. Robado de acá: http://support.managed.com/kb/a398/how-to-repair-a-suspect-database-in-mssql.aspx.