Que tipo de informações de auditoria é armazenado pelo servidor SQL quando um CREATE TABLE ou operação ALTER TABLE é realizada?

StackOverflow https://stackoverflow.com/questions/984558

  •  13-09-2019
  •  | 
  •  

Pergunta

A inspiração para esta pergunta é um proc armazenados quebrou em mim, porque ele chamou um outro proc armazenado que os dados inseridos em uma tabela cujo esquema foi completamente alterado.

A questão é que você tem uma tabela em um banco de dados SQL Server, e você não sabe como ele chegou lá. Você não tem nenhum gatilhos DDL no local para informações de auditoria personalizada, e não há nenhum registro em seu repositório das tabelas DDL controle de origem. Usando apenas SQL Server, que dados forense você pode obter sobre a mesa.

Eu mesmo, e quem se depara com esta questão em uma situação semelhante, não vai ser ajudado por sugestões sobre controle de versão e gatilhos DDL. Aqueles são grandes go soluções para a frente, e não há muita informação sobre este blog sobre esses tópicos, se a política da empresa nos permite implementar essas soluções. O que eu, e as pessoas na minha situação realmente precisa é ser capaz de reunir o maior número de fragmentos de dados possível a partir de servidor SQL, para combinar com o que outros dados que podem chegar a.

Foi útil?

Solução

Infelizmente, você não tem nenhuma maneira de reconstruir o que aconteceu, exceto:

  • Se os DBAs têm traços em execução e a história. SQL Server 2005 tem um traço padrão e há a trace "caixa preta", mas estes são usados ??para descobrir o que aconteceu logo antes de um acidente

  • Se você tem modelo de recuperação completa, então você pode tentar uma ferramenta de visualizador de log ( livre Red gate um )

  • dependendo da atividade e seu modelo de segurança, você também pode verificar o log de segurança do Windows para ver quem conectado com privilégios de DDL

  • os logs de eventos SQL também podem ter informações. Por exemplo, se você tiver ativado o sinalizador de rastreamento que registra erros "permissão", então você pode ver quando começou. Ou a pessoa que fez a alteração pode ter gerado outras exceções que são registrados

  • você poderia pedir aqueles com direitos. Poderia ser um erro genuíno (por exemplo, achava que eles estavam em dev)

Outras dicas

A consulta a seguir-me a criar e última vez Modificar tem.

SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')

Você deve ser capaz de encontrar a criação da tabela no . transação log Eu nunca usei qualquer uma das ferramentas espectador aqui, e eu não poderia dizer-lhe como procurar volta no tempo para isso, mas tudo acontece em uma transação, de modo que tem que estar conectado - até mesmo o tabelas do sistema ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top