Olá amigos do SBO.

Está semana me deparei com um grande problema:
_ Me solicitaram um relatório que deveria substituir uma planilha. Durante o desenvolvimento, ao registrar as tabelas e campos que irão compor o relatório, me deparei com algumas telas de add-on que não permitem visualizar a tabela e o campo, por meio da opção “Informação do Sistema”.

Pesquisei várias coisas e, por fim, encontrei um script para ser executado diretamente no SQL Server, o qual exibe as alterações de INSERT, DELETE e UPDATE realizadas em determinado período de tempo.

Este é o Script:

SELECT 
      [db_name] = d.name
    , [table_name] = SCHEMA_NAME(o.[schema_id]) + '.' + o.name
    , s.last_user_update
FROM
	sys.dm_db_index_usage_stats s
	JOIN sys.databases d ON s.database_id = d.database_id
	JOIN sys.objects o ON s.[object_id] = o.[object_id]
WHERE
	o.[type] = 'U' /*(Transact-SQL) sys.objects.type = 'U' -> User Table | Link: http://www.techrepublic.com/article/understanding-sql-servers-sysobjects-table/ */
	AND s.last_user_update IS NOT NULL
    AND s.last_user_update BETWEEN DATEADD(DAY, -1, GETDATE()) AND GETDATE()
ORDER BY
	s.last_user_update DESC

Basta executa-lo, utilizando um usuário com a devida permissão.

Abaixo, um demonstrativo do resultado:

-> Objetivo: Preciso encontrar a tabela que armazena os dados da Nota Fiscal referenciada no documento de marketing «Nota Fiscal de Entrada».

-> Cenário: Tenho uma NF Entrada inserida e agora irei registrar a NFe Referenciada via Add-on.

Nota Fiscal inserida:

NF a ser referenciada:

Processo de adição da NF Referenciada na Nota Fiscal de Entrada:

Após a atualizar o documento, executamos o script para verificar quais as tabelas serão modificadas no processo:

Como você pode ver, o script retornou 5 linhas que se referem ao momento em que atualizei a tabela. Para definir isso, tomei como base o horário do PC em relação ao horário da atualização, conforme você pode observar na seta.

Para alcançar meu objetivo, realizo um Select (com os critérios pertinentes para cada caso) na(s) tabela(s).

No caso, fiz um select que retorna a última linha da tabela. Ao analisar os seus dados, constatei que é a tabela a qual procurava, pois ela apresenta o DOCENTRY das Notas utilizadas no exemplo.

Espero que me raciocínio tenha ficado claro e que este post ajude a quem precisar.

Encerro com uma frase:

Sempre há algo novo para aprender.

Att,
Maicon Macedo

SBO 9.1 PL10 (Produção)
SBO 9.2 PL04 (Homologação)

To report this post you need to login first.

2 Comments

You must be Logged on to comment or reply to a post.

  1. Luciano Barroqueiro

    muito bom, muito bem feito mas já conheço o recurso desde 2003 .. é uma questão de troca de experiencias muitas vezes. Vc vai achar também na maioria dos BD relacionais como Oracle por exemplo . Sò não conte com isso nos NoSQL  pois a estrutura é bem diferente, ainda estou estudando. . 

    (1) 

Leave a Reply