Não, não existe. Qualquer tipo de rastreamento 'last updated at' apresentaria um grave problema de desempenho, pois todas as atualizações, de todas as transações, tentariam atualizar o registro único que rastreia a 'última atualização em'. Isso efetivamente significa que apenas uma transação pode atualizar a tabela a qualquer momento, e todas as outras transações precisam aguardar a confirmação da primeira. . Serialização completa. O número de administradores / desenvolvedores dispostos a tolerar essa penalidade de desempenho apenas para o benefício de saber quando a última atualização ocorreu é provavelmente pequeno.
Portanto, você está preparado para lidar com isso via código personalizado. Isso significa gatilhos, já que a alternativa (detecção de registros de log) é uma prerrogativa reservada apenas para replicação transacional (ou é o alter-ego do CDC ). Esteja ciente de que se você tentar controlá-lo por meio da coluna 'última atualização em', estará enfrentando exatamente o problema de serialização mencionado acima. Se a simultaneidade da atualização for importante, você precisará usar um mecanismo de fila (o gatilho usa um INSERT e, em seguida, um processo agrega os valores inseridos para formular a 'última atualização em'). Não tente trapacear com alguma solução 'inteligente', como esconder a identidade atual ou procurar sys.dm_db_index_usage_stats . E também uma coluna 'updated_at' por registro, como os registros de data e hora do Rails,
Existe alguma alternativa 'leve'? Na verdade, existe um, mas é difícil dizer se funcionará para você e é difícil acertar: Notificações de consulta . A notificação de consulta faz exatamente isso; ele configurará uma notificação se algum dado sofrer alterações e você precisar atualizar sua consulta. Embora a maioria dos desenvolvedores esteja familiarizada apenas com sua encarnação .Net como SqlDependency, o Query Notification pode ser usado como um mecanismo persistente e duradouro para detectar alterações de dados. Comparado com o verdadeiro rastreamento de alterações, ele será realmente leve e sua semântica estará mais próxima das suas necessidades (algo, qualquer coisa , mudou, portanto, você precisa executar novamente a consulta).
Mas, no final, em seu lugar, eu realmente reconsideraria minhas suposições e voltaria à prancheta. Talvez você possa usar o envio ou a replicação de logs para configurar um banco de dados de relatórios, em um servidor diferente. O que eu li nas entrelinhas é que você precisa de uma tubulação ETL adequada e de um data warehouse de análise ...