Access
 sql >> Database >  >> RDS >> Access

Inserisci CreatedBy e CreatedOn in tutte le tabelle di dati mancanti in SQL

Inserisci CreatedBy e CreatedOn in tutte le tabelle di dati mancanti in SQL

Quando progettiamo soluzioni di Access con SQL Server, aggiungiamo quasi sempre CreatedBy e CreatedOn a tutte le nostre tabelle, consentendo ai nostri clienti di vedere chi ha creato i record nel frontend di Access.

Script per aggiungere CreatedBy e CreatedOn automaticamente alle tabelle

Molte volte ereditiamo database SQL e abbiamo bisogno di un modo rapido per aggiungere entrambi i campi a tutte le tabelle nel database. A tal fine utilizziamo il seguente script per verificare se CreatedBy e CreatedOn sono presenti nella tabella e, in caso contrario, aggiungerli:
DECLARE @ROWID Int
DECLARE @SQLExecute Varchar(max)
DECLARE @Table_Name VARCHAR(Max)
DECLARE @Qty Int
SET @rowid = 0
SET @Table_Name = ''
DECLARE grant_tbl_cursor CURSOR FOR
SELECT  Table_Name
FROM tblTablePermissions
OPEN grant_tbl_cursor
FETCH NEXT FROM grant_tbl_cursor
INTO @Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
IF COL_LENGTH(@Table_Name, 'CreatedOn') IS NULL
BEGIN
/*Column does not exist or caller does not have permission to view the object*/
select @sqlExecute = 'alter table [' + @Table_Name + '] add CreatedOn DateTime2(0) DEFAULT CURRENT_TIMESTAMP NULL' 
PRINT @SQLExecute
EXECUTE( @sqlExecute)
END
IF COL_LENGTH(@Table_Name, 'CreatedBy') IS NULL
BEGIN
select @sqlExecute = 'alter table [' + @Table_Name + '] add CreatedBy Varchar(25) DEFAULT suser_sname() NULL' 
EXECUTE( @sqlExecute)
End
FETCH NEXT FROM grant_tbl_cursor
INTO @Table_Name
END
CLOSE grant_tbl_cursor
DEALLOCATE grant_tbl_cursor

Lo script sta leggendo da tblTablePermissions che è solo un elenco di tabelle di SQL Server utilizzate dall'applicazione. Usiamo la tabella nella nostra tecnica DSNless.

Una volta eseguito lo script SQL Server segnerà automaticamente la data e inserirà il nome della rete dell'utente nel campo CreatedBy, consentendo di creare analisi su quanti nuovi record sono stati aggiunti al database e da chi nel tempo.