SQL Server Profiler - Como filtrar o rastreamento para exibir apenas eventos de um banco de dados?

381

Como limite um rastreamento do SQL Server Profiler para um banco de dados específico? Não consigo ver como filtrar o rastreamento para não ver eventos para todos os bancos de dados na instância à qual me conecto.

ConcernedOfTunbridgeWells
fonte

Respostas:

574

Em Propriedades do Rastreio> guia Seleção de Eventos> selecione Mostrar todas as colunas. Agora, em filtros de coluna, você deve ver o nome do banco de dados. Digite o nome do banco de dados para a seção Curtir e você deverá ver rastreamentos apenas para esse banco de dados.

Gulzar Nazim
fonte
8
Não sei se esse é um problema comum, mas quando executo o criador de perfil, o nome do banco de dados fica em branco para muitos dos valores que rastreio. Eu tenho que usar a coluna DatabaseID e descobrir os valores corretos para entrar consultando a tabela sysdatabases no banco de dados mestre
Jim Birchall
34
Para localizar o DatabaseID: SELECT [nome], [dbid] FROM [mestre]. [Dbo]. [Sysdatabases] ORDER BY [nome]
Simon
11
Também depende do modelo que você selecionar, se houver. +1
beaudetious
2
E você precisa fazer isso beforeiniciando o rastreamento. Se você fizer isso depois - o campo não será editável!
22414 DarkWalker
2
Não se esqueça de interromper o rastreamento ou iniciar antes de executá-lo.
Fery
42

No SQL 2005, você primeiro precisa mostrar a coluna Nome do banco de dados em seu rastreamento. A coisa mais fácil a fazer é escolher o modelo de ajuste, que já possui essa coluna.

Supondo que você tenha selecionado o modelo de ajuste, para filtrar:

  • Clique na guia "Seleção de eventos"
  • Clique no botão "Filtros de coluna"
  • Marque Mostrar todas as colunas (lado direito para baixo)
  • Selecione "DatabaseName", clique no sinal de mais ao lado de Curtir no painel direito e digite o nome do banco de dados.

Também sempre salvei o rastreamento em uma tabela para poder fazer consultas LIKE nos dados de rastreamento após o fato.

Preço de Todd
fonte
8

Por experimento, pude observar isso:

Quando o SQL Profiler 2005 ou SQL Profiler 2000 é usado com o banco de dados que reside no SQLServer 2000 - o problema mencionado persiste, mas quando o SQL Profiler 2005 é usado com o banco de dados SQLServer 2005, ele funciona perfeitamente!

Em resumo, o problema parece prevalecer no SQLServer 2000 e corrigido no SQLServer 2005.

A solução para o problema ao lidar com o SQLServer 2000 é (conforme explicado por wearejimbo)

  1. Identifique o DatabaseID do banco de dados que você deseja filtrar consultando a tabela sysdatabases como abaixo

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Use o DatabaseID Filter (em vez de DatabaseName) na janela New Trace do SQL Profiler 2000

Praveen
fonte
4

Nas propriedades Rastreio, clique na guia Seleção de Eventos na parte superior ao lado de Geral . Em seguida, clique em Filtros de coluna ... no canto inferior direito. Você pode então selecionar o que filtrar, como TextDataou DatabaseName.

Expanda o nó Gosto e insira seu filtro com os %sinais de porcentagem como %MyDatabaseName%ou %TextDataToFilter%. Sem o%% sinais, o filtro não funcionará.

Além disso, verifique a caixa de seleção Excluir linhas que não contêm valores ' Se você não conseguir encontrar o campo que deseja filtrar, como DatabaseNamevá para a guia Geral e altere seu modelo , o campo em branco deverá conter todos os campos.

6dev6il6
fonte
1

Crie um novo modelo e verifique DBname. Use esse modelo para seu arquivo de rastreamento.


fonte