[DB] E il codice T-SQL dove sta?

Se uno dovesse mantenere la storia di tutte le evoluzioni / versioni delle sue stored procedure in SQL Server dovrebbe ricordarsi (e ricordare a tutti gli sviluppatori che ci mettono mano) di estrarre il codice, di salvarlo in un file (magari .sql per sfruttare le feature di highlighting di editor quali Notepad2, UltraEdit ecc.) e salvarlo in una cartella (o, perché no, in Source Safe) e sperare che nessuno lo sovrascriva.

Frugando tra le viste di sistema dei database del mio SQL Server 2005 ne ho trovate due che mi hanno fatto luccicare gli occhi:

INFORMATION_SCHEMA.ROUTINES e sys.sql_modules

La prima contiene, oltre al nome esteso suddiviso in campi (catalog.schema.routine) anche la data di creazione, la data di ultima modifica e il campo, udite udite, ROUTINE_DEFINITION che, non criptato, contiene il codie T-SQL della routine!!!! La dura realtà è che è lungo solo 4000 caratteri... Ed ecco che una ulteriore ricerca ha portato alla scoperta della seconda vista che ha il campo DEFINITION definito nvarchar(MAX)!!!!!!! Fico!!! Vuol dire che ci sta tutto il codice!!!!! Purtroppo, ma solo per le versioni precedenti, la sys.sql_modules esiste solo nella versione 2005...

Cosa farne? Noi abbiamo creato un DB apposta con una tabella copia della vista più alcuni campi di contorno in cui salviamo le versioni...

 

Print | posted @ giovedì 22 febbraio 2007 20:12

Comments have been closed on this topic.