Inserir CreatedBy e CreatedOn em quaisquer tabelas de dados ausentes no SQL
Quando projetamos o Access com soluções SQL Server, quase sempre adicionamos CreatedBy e CreatedOn a todas as nossas tabelas, permitindo que nossos clientes vejam quem criou registros no frontend do Access.
Script para adicionar CreatedBy e CreatedOn automaticamente às tabelas
Muitas vezes herdamos bancos de dados SQL e precisamos de uma maneira rápida de adicionar os dois campos a todas as tabelas do banco de dados. Para isso utilizamos o seguinte script que irá verificar se CreatedBy e CreatedOn estão presentes na tabela e caso não estejam, adicione-os:
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
O script está lendo tblTablePermissions, que é apenas uma lista de tabelas do SQL Server usadas pelo aplicativo. Usamos a tabela em nossa técnica DSNless.
Depois de executar o script, o SQL Server automaticamente marcará a data e colocará o nome da rede do usuário no campo CreatedBy, permitindo que você crie análises sobre quantos novos registros foram adicionados ao banco de dados e por quem ao longo do tempo.