Algo ruim aconteceu ontem.
Uma visão criada há algum tempo atrás foi modificada por alguém que acabou quebrando os relatórios. Infelizmente. alguém (consciente ou inconscientemente) fez essa modificação no banco de dados PRODUCTION.
Minha pergunta: Existe uma maneira (script / software / freeware etc) pela qual possamos conhecer quem (nome de usuário) fez essa modificação, para que eu possa revogar o acesso ao banco de dados de produção para esse usuário.
Se minha pergunta não estiver clara, comente.
fonte
Object:Created
evento e também para que a exibição fosse descartada e criada em vez de alterada. Não sabe o que você quer dizer com não está executando no servidor? É claro que você precisa estar conectado à instância correta, mas não importa de onde a conexão vem, desde que você tenha permissões.SELECT path FROM sys.traces where is_default=1
Martin já apontou para a melhor avenida, o rastreamento de auditoria administrativa que geralmente está ativado (a menos que tenha sido explicitamente desativado). Se você não conseguir encontrar as informações no rastreamento do administrador (foi desativado ou foi reciclado), é possível recuperar as informações dos backups de log. Como é um banco de dados de produção, presumo que você tenha um ciclo de backup regular, com backups periódicos completos de backup e log. Você precisará restaurar, em um servidor separado, o banco de dados por volta da hora do incidente, para que o DDL esteja no log restaurado atual. Então é uma simples questão de usar
fn_dblog()
e inspecionar o log.Uma maneira é seguir as operações de início da transação:
Se o
ALTER VIEW
foi emitido em uma transação independente (ou seja, não é cercado porBEGIN TRANSACTION
/COMMIT
), ele iniciará uma transação denominadaCreatProc transaction
. Procure e[Transaction SID]
é o SID de login que você deseja.Outra possibilidade é procurar a transação que adquiriu um SCH_M na visualização desejada:
Observe que se a exibição foi alterada por DROP seguida por CREATE, o ID do objeto provavelmente foi alterado, mas pelo menos você obterá a transação que fez o último CREATE (o ID do objeto atual da exibição no banco de dados restaurado). Com o ID da transação, você volta e recupera as informações de início da transação:
O [Transaction SID] é, novamente, o seu cara. Use
SUSER_SNAME
para recuperar o nome de login do SID de login. Se o SID for 0x01, significa que o login foisa
, o que significa que qualquer pessoa que saiba que asa
senha poderia ter feito isso.fonte
Não, a menos que você o tenha registrado através de um gatilho DDL ou
Você deseja examinar quem, como direitos ALTER nesse banco de dados, ou associação à função sysadmin / db_owner / ddl_admin. Isso seria melhor como uma revisão geral do que como uma caça às bruxas. Provavelmente, há outras pessoas com direitos para fazer alterações não aprovadas e não autorizadas também
fonte
Se ainda não o fez, consulte o relatório Histórico de alterações de esquema disponível no SQL Server Management Studio. Parece que o SQL Server registra alterações por padrão ( rastreamento padrão ) e você deve poder visualizar esses dados por meio deste relatório. A única coisa infeliz é que esses arquivos de rastreio são automaticamente excluídos / rolados com o passar do tempo, para que os dados já tenham desaparecido. Boa sorte!
fonte