Para criar um log de alteracoes de uma tabela, podemos utilizar uma trigger, tambem chamado de gatilho. Ao ser feito uma alteracao ou um delete em uma tabela ela cria uma especie de tupla virtual no momento da execucao chamada INSERTED e/ou DELETED. No caso de UPDATE teremos os dois.Primeiro vamos criar uma tabela para salvar os logs. Podemos utilizar a SQL abaixo:USE [minhaBaseDeDados] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[logusuario]( [codigo] [int] IDENTITY(1,1) NOT NULL, [codusuario] [varchar](20) NOT NULL, [nome] [varchar](50) NOT NULL, [alterado_por] [varchar](20) NOT NULL, [alterado_em] [datetime] NOT NULL, CONSTRAINT [PK_logusuario] PRIMARY KEY CLUSTERED ( [codigo] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GOCom esse comando SQL, criaremos a tabela logusuario com as colunas: codigo, codusuario, nome, alterado_por e alterado_em.Agora iremos criar a Trigger.USE [minhaBaseDeDados] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TRIGGER [dbo].[LOGGUSUARIO] ON [dbo].[GUSUARIO] FOR update AS BEGIN DECLARE @codusuario varchar(30); select @codusuario = INSERTED.CODUSUARIO from inserted; IF UPDATE(senha) BEGIN INSERT INTO logusuario ( codusuario, nome, alterado_por, alterado_em ) ( SELECT top 1 GUSUARIO.CODUSUARIO, GUSUARIO.NOME, GUSUARIO.RECMODIFIEDBY, GUSUARIO.RECMODIFIEDON FROM dbo.GUSUARIO WHERE GUSUARIO.CODUSUARIO = @codusuario ) END ENDEssa trigger sera criada na tabela GUSUARIO que no meu caso e onde estao salvos os usuarios. Ela sera executada quando for executado uma alteracao em algum cadastro de usuario. A linha onde esta escrito "FOR update" indica que uma acao sera executada quando for feito um update na tabela.Quando a acao e um update, o banco de dados faz um delete e depois um insert. Por isso na trigger teremos a tupla DELETED e INSERTED.A linha "select @codusuario = INSERTED.CODUSUARIO from inserted;", armazena na variavel @codusuario, o codigo do usuario que esta sendo alterado.Na proxima linha temos um IF que verifica se o campo senha esta sendo alterado e faz o insert se o usuario esta alterando a senha.O insert feito esta utilizando um select. No meu caso o sistema salva o ultimo usuario que alterou a linha no campo RECMODIFIEDBY e salva a data da ultima modificacao em RECMODIFIEDON. Assim em proximas alteracoes teremos todos os usuarios que alteraram senha na outra tabela, a logusuario.E isso. Ate mais. Gerenciar ambientes de infraestrutura de tecnologia atualmente e um desafio que vai alem de manter o parque de servidores e desktops funcionais e disponiveis na maioria do tempo. E certo que nosso planeta esta em colapso e em momentos como este qualquer pequena atitude dentro da empresa contribui, sem duvida nenhuma, para minimizar os danos que a tecnologia da informacao causa ao meio ambiente. A cultura empresarial existente na area de infraestrutura de tecnologia deve ser alterada de modo que desperdicios sejam contidos e custos sejam reduzidos. Como exemplo, podemos citar que na maioria das empresas a infraestrutura de tecnologia e dimensionada muito alem das necessidades reais. Isso se deve a falta de alinhamento entre as equipes de desenvolvimento de software, negocios e infraestrutura de tecnologia, o que acarreta um sizing