Infoga CreatedBy och CreatedOn i alla saknade datatabeller i SQL
När vi designar Access med SQL Server-lösningar lägger vi nästan alltid till CreatedBy och CreatedOn till alla våra tabeller, vilket gör att våra kunder kan se vem som skapade poster i Access-gränssnittet.
Skript för att lägga till CreatedBy och CreatedOn automatiskt till tabeller
Många gånger ärver vi SQL-databaser och vi behöver ett snabbt sätt att lägga till båda fälten i alla tabeller i databasen. För det ändamålet använder vi följande skript för att kontrollera om CreatedBy och CreatedOn finns i tabellen och om de inte är det, lägg till dem:
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
Skriptet läser från tblTablePermissions som bara är en lista över SQL Server-tabeller som används av applikationen. Vi använder tabellen i vår teknik utan DSN.
När du har kört skriptet kommer SQL Server automatiskt att datumstämpla och placera användarens nätverksnamn i fältet CreatedBy, så att du kan skapa analys av hur många nya poster som lagts till i databasen och av vem över tiden.