Access
 sql >> Base de données >  >> RDS >> Access

Insérer CreatedBy et CreatedOn dans toutes les tables de données manquantes dans SQL

Insérez CreatedBy et CreatedOn dans toutes les tables de données manquantes en SQL

Lorsque nous concevons Access avec des solutions SQL Server, nous ajoutons presque toujours CreatedBy et CreatedOn à toutes nos tables, permettant à nos clients de voir qui a créé des enregistrements dans l'interface Access.

Script pour ajouter CreatedBy et CreatedOn automatiquement aux tables

Souvent, nous héritons des bases de données SQL et nous avons besoin d'un moyen rapide d'ajouter les deux champs à toutes les tables de la base de données. À cette fin, nous utilisons le script suivant pour vérifier si CreatedBy et CreatedOn sont présents dans la table et s'ils ne le sont pas, ajoutez-les :
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

Le script lit à partir de tblTablePermissions qui n'est qu'une liste de tables SQL Server utilisées par l'application. Nous utilisons le tableau dans notre technique sans DSN.

Une fois que vous avez exécuté le script, SQL Server horodatera automatiquement et placera le nom de réseau de l'utilisateur dans le champ Créé par, vous permettant de créer une analyse sur le nombre de nouveaux enregistrements ajoutés à la base de données et par qui au fil du temps.