sql >> Base de Datos >  >> RDS >> Access

Inserte CreatedBy y CreatedOn en las tablas de datos que faltan en SQL

Insertar Creado por y Creado el en las tablas de datos faltantes en SQL

Cuando diseñamos soluciones de Access con SQL Server, casi siempre agregamos CreatedBy y CreatedOn a todas nuestras tablas, lo que permite a nuestros clientes ver quién creó registros en la interfaz de Access.

Script para agregar Creado por y Creado en automáticamente a las tablas

Muchas veces heredamos bases de datos SQL y necesitamos una forma rápida de agregar ambos campos a todas las tablas de la base de datos. Con ese fin, usamos el siguiente script que verificará si CreatedBy y CreatedOn están presentes en la tabla y, si no lo están, los agregará:
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

El script lee de tblTablePermissions, que es solo una lista de tablas de SQL Server utilizadas por la aplicación. Usamos la tabla en nuestra técnica DSNless.

Una vez que haya ejecutado el script, SQL Server marcará automáticamente la fecha y colocará el nombre de la red del usuario en el campo Creado por, lo que le permitirá crear un análisis sobre cuántos registros nuevos se agregaron a la base de datos y por quién a lo largo del tiempo.