Digamos que eu tenha um procedimento armazenado como este (suponha que os esquemas da tabela estejam corretos):
CREATE PROCEDURE p_MyProc
AS
INSERT MyTable SELECT Col1 FROM Table1
INSERT MyTable SELECT Col2 FROM Table2
INSERT MyTable SELECT Col3 FROM Table3
Assumindo que acabam sendo grandes inserções que podem levar vários minutos cada, é possível determinar qual delas está sendo executada no contexto de um procedimento armazenado?
Eu sei como encontrar qual procedimento armazenado está em execução, estou apenas procurando ver se há uma maneira de obter mais granular sem ter que adicionar PRINT ou outras instruções de rastreamento lá. Existe talvez uma maneira de fazer as declarações aparecerem em um rastreamento?
Você pode acompanhar com um SQL Server Trace ou Extended Events .
Você pode assistir extratos e/ou lotes concluídos, e isso deve fornecer a granularidade que você está procurando.
Classe de evento SP:StmtCompleted
Eu faço isso através do DMV, como você pode ver no script abaixo:
(faz parte de um roteiro mais detalhado, mas acabei de extrair a parte relevante para você nesta questão)
Você pode ver no exemplo abaixo, ele está fazendo um
insert
dentro do procedimento armazenado.