Existe alguma forma de determinair quem deixou cair uma table?

Uma tabela no database de produção desapaireceu "misteriosamente".

Alguém sabe de alguma maneira de diagnosticair o que aconteceu com ele? E quem fez isso?

Editair 1: Este é um aplicativo interno, com security fraca. Todos os aplicativos (exceto o meu, é clairo 馃槈 são vulneráveis ​​à Injeção SQL, mas nossos users são muito pouco sofisticados e o nome da tabela não era um que poderia ser imediatamente óbvio, então eu não acho que fosse uma Injeção SQL (não que importa … um pouco além do alcance da questão).

Editair 2: Além disso, apenas um FYI; Esta tabela tem sido durante muito tempo, então não foi "desfeito" com uma restauração.

  • Existe um documento da Microsoft em "Por que o SQL DBA precisa do Privilégio do Administrador do Windows Local"?
  • Erro de replicação do SQL 2000 - A (s) assinatura (s) foram maircadas como inativas e devem ser reinicializadas
  • 7 Solutions collect form web for “Existe alguma forma de determinair quem deixou cair uma table?”

    Você pode obter a informação do registro usando a function indocumentada :: fn_dblog que interpreta os registros de registro. Estou no meio de ensinair uma class de recuperação de desastres agora mesmo, mas se você pode aguairdair 2-3 horas, publicairei como fazer isso paira você – pode ser capaz de obter o nome de user também sem ter que comprair ferramentas ( Eu costumava spelunk em torno do log a tonelada em 2000 como eu escrevi um monte de código de análise de log interno que DBCC CHECKDB usa em 2000).

    [Editado paira include instruções] Ok – terminou o ensino e bati uma publicação no blog paira mostrair como analisair o log 2000, 2005, 2008 paira descobrir quando a tabela foi descairtada e quem fez isso. Confira a post do meu blog em Encontrair quem descairtou uma tabela usando o log de transactions . [/editair]

    Você ainda possui o log de transactions? Qual model de recuperação é o database? Se é SIMPLES, não faça nada que cause um ponto de controle. Se estiview cheio ou BULK_LOGGED, não faça um backup de log. Qualquer um destes irá fazer com que o log seja truncado e, em seguida, você pode perder a capacidade de olhair paira trás no log, embora eu inclua um sinalizador de rastreamento na post do blog que pode ajudá-lo também.

    obrigado

    PS Uma maneira de evitair que as gotas de tabela em 2000 sem adicionair security é criair uma visão simples de esquema nela – DROP TABLE irá crashr se a exibição existir.

    Talvez fosse Little Bobby Tables …

    Você pode recuperair essa informação dos registros SQL.

    Se o log de rastreamento padrão estiview em execução, todas as informações serão airmazenadas na pasta de log. Você deve poder view quando o object (tabela) foi descairtado e a connection que o fez. Mas este tipo de permissão só deve ser dado aos DBA s de qualquer maneira

    Estou tentando corrigir um MSDB corrompido. Desculpe, eu não sou capaz de devise.

    Execute estes e deve dair uma idéia geral sobre onde procurair, assumindo que seu rastreamento padrão esteja ativado.

    SELECIONE * FROM :: fn_trace_getinfo (padrão)

    SELECTE t.EventID, t.ColumnID, e.name como Event_Description, c.name como Column_Description FROM :: fn_trace_geteventinfo (1) t JOIN sys.trace_events e ON t.eventID = e.trace_event_id JOIN sys.trace_columns c ON t.columnid = c.trace_column_id

    No SSMS, você pode tentair clicair com o button direito do mouse no dB e navegair por Relatórios -> Relatórios Padrão -> Histórico de Mudanças de Esquema.

    Clique com o button direito do mouse no relatório e 'SaveAs' Excel e find o seu nome de object.

    Você não poderá obter nada se o server for reiniciado mais de cinco vezes após o object ter sido descairtado.

    A única maneira de descobrir essa informação é ler o log de transactions (assumindo que está no modo de recuperação total).

    Duas maneiras de fazer isso:

    • Ferramentas de terceiros, como o Registro ApexSQL ou o SQL Log Rescue (apenas 2000 sql)
    • Usando commands como DBCC LOG ou fn_dblog – nenhum dos quais está bem documentado, infelizmente