Estou olhando para uma tabela de auditoria criada por um gatilho e fomos inteligentes o suficiente para salvar o SUSER_NAME();
que temos uma coluna chamada LastUpdateRef
, mas nem todo código antigo foi atualizado para usá-lo (é um código exclusivo para ajudar a rastrear as atualizações de volta ao código que os causou).
Então eu sei que alguém está atualizando, por exemplo, TerminalId
na Transaction
tabela. Como eu responderia a isso?
Mostre-me todos os procedimentos armazenados que possuem uma instrução de atualização na tabela de transação que altera explicitamente o TerminalId
Parece que isso estaria além de qualquer RegEx que seria fácil de escrever.
Algumas instruções de atualização estão neste formato, onde o nome da tabela está após FROM
:
update a
set
ArrivalDate = @ArrivalDateLocalTime,
LastUpdate = SYSDATETIME(),
LastUpdateRef = 'REFGFI168',
LastUpdateBy = @UserID
from Flight a where etc...
Você tem muitos procedimentos em que obter a rede aproximada e, em seguida, eliminar quaisquer falsos positivos manualmente seria extremamente censurável?
O último caso para cobrir este formulário:
Não sei o quanto um RegEx "melhor" poderia ser mais confiável ao identificar apenas aqueles que realmente atualizam essa coluna e nunca identificar um falso positivo. Na verdade, qualquer declaração de atualização real que corresponda às expressões acima (ou qualquer expressão RegEx que você provavelmente criaria inicialmente) pode ser incorporada a um comentário ou string.
Eu sugiro começar simples. Se o acima produzir muitos falsos positivos, seja mais preciso.