1017giorni trascorsi da
SQLBits 9

powered by

Progetti‎ > ‎

Prevent Drops


Premessa

Troppe volte ho assistito a imbarazzanti imprevisti su SQL Server in produzione. Di fatto cancellare una stored procedure, una vista, o peggio ancora una tabella o addirittura di un intero database richiede la pressione di due soli tasti in sequenza (CANC seguito da ENTER). A partire da SQL Server 2005 è possibile impedire che ciò avvenga, implementando poche righe di codice T-SQL per la costruzione di Trigger di tipo DDL. Personalmente ritengo la cosa di fondamentale importanza, per cui esorto il cliente a implementare questa soluzione. Non sempre però è possibile al primo colpo, infatti non sono pochi i casi in cui i programmatori hanno la cattiva abitudine di costruire tabelle ad uso temporaneo che eliminano subito dopo l'uso. In questi casi occorre naturalmente modificare queste tabelle in vere e proprie tabelle temporanee locali (#) o globali (##), le quali NON sono influenzate dai Trigger DDL che la soluzione va costruire.

Obiettivi

Implementare una soluzione basata Trigger di tipo DDL (Data Definition Language) per
  • impedire la cancellazione accidentale di database
  • impedire la cancellazione accidentale dei seguenti oggetti di database:
    • tabelle
    • viste
    • sinonimi
    • stored procedure
    • user defined function
    • assembly
    • schema
  • consentire la sola cancellazione di oggetti appartenenti a un determinato database schema
  • tracciare in tabelle di database le modifiche strutturali che intervengono

Per iniziare

Per comprendere i concetti fondamentali sull'oggetto di questo progetto, ti consiglio la lettura dei seguenti articoli:

Note

  • Lo script di setup deve essere lanciato in modalità SQLCMD. Per attivare la quale occorre
    1. aprire lo script con il Management Studio
    2. scegliere dal menu Query --> SQLCMD mode
Se le righe che iniziano con il simbolo : (due punti) assumono uno sfondo argentato, vuol dire che la modalità SQLCMD è attivata.


Video tutorial


ċ
prevent_drops_setup.sql
Scarica
T-SQL Script  4 k v. 4 11/feb/2010 03:36 Francesco Quaratino
Comments