Estou usando o SQL Server 2012 e queria saber como criar o perfil de procedimentos armazenados
Por exemplo, o criador de perfil pode capturar cada instrução SQL individual em um procedimento armazenado, o que é e quanto tempo leva para ser executado, etc.?
Estou tentando diagnosticar procedimentos armazenados de replicação de mesclagem e isso deve ser capturado como parte de uma execução completa do agente de mesclagem. Não parece possível pegar o procedimento armazenado com problemas de desempenho e executá-lo novamente porque nesse ponto ele não é lento.
A resposta de Kevin descreve quais eventos capturar no SQL Trace/SQL Profiler. Para expandir um pouco essa resposta -
SP:StmtCompleted
mostrará cada instrução dentro de um procedimento armazenado sendo concluído, como parece.Além disso, se você estiver em um sistema ocupado e tentando diagnosticar um problema de desempenho, deve ter cuidado com o SQL Profiler. O SQL Profiler é muito mais lento do que rastrear um arquivo ou usar eventos estendidos. Esta postagem de blog de Jonathan Kehayias mostra cerca de 90% de sobrecarga no desempenho de um sistema usando o SQL Profiler e cerca de 10% de sobrecarga do rastreamento para o arquivo. Menos para Eventos Estendidos. É por isso que normalmente é recomendado não executar o próprio SQL Profiler enquanto
Embora essas informações estejam disponíveis por meio de eventos estendidos, sugiro ainda usar o SQL Trace (a tecnologia por trás do SQL Profiler), mas rastrear para um arquivo(se você quisesse investir em aprender e usar Extended Events este seria o caminho a seguir, em uma versão futura do SQL Server SQL Trace terá desaparecido e tudo o que teremos são Extended Events) . Eu também sugiro que você filtre através do botão Filtros de Coluna o máximo de ruído de fundo possível para garantir que você esteja capturando apenas o necessário. Você pode configurar seu rastreamento com a ferramenta Profiler usando as etapas que Kevin descreve em sua boa resposta e, em seguida, adicionar um filtro dessa mesma GUI. Em seguida, você pode exportar o rastreamento como um script e executar esse script no rastreamento do SQL Server em um arquivo em uma pasta que não contenha arquivos de banco de dados ou log de transações. Para exportar, basta configurar seu rastreamento, executá-lo por alguns segundos para ter certeza de que está capturando o que deseja, interrompê-lo e depois ir para a barra de menus e
File
->Export
->Script Trace Definition
e salve o arquivo. Em seguida, abra esse arquivo em uma nova janela de consulta no servidor que você pretende rastrear. Você pode ver mais sobre as opções e definições desse script que você criou consultando os artigos de ajuda para os vários procedimentos armazenados usados nesse script que você acabou de criar, começando aqui .Se você tiver tempo e quiser aprender, também pode ler alguns artigos sobre Eventos Estendidos e ver como capturar as informações também. Jonathan Kehayias é um ótimo recurso para postagens de blog quando você estiver pronto para começar.
Você pode capturar as instruções individuais em um procedimento armazenado por meio do SQL Server Profiler. Para fazer isso, na guia Seleção de eventos, clique na caixa de seleção "Mostrar todos os eventos". Em seguida, role para baixo até a categoria Stored Procedures e marque a caixa ao lado de SP:StmtCompleted . Se você também tiver os eventos SQL:BatchStarted e SQL:BatchCompleted selecionados, poderá obter uma imagem do início ao fim de uma execução de procedimento armazenado, vinculando tudo pelo SPID.
Também pode ser útil examinar o cache do plano para ver se você pode obter um plano de consulta para o procedimento de execução lenta. Você poderia começar com algo assim: