Инструменты для анализа SQL отчетов / запросов аудита сервера - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть аудит всех запросов с использованием таблицы [dbo].[Tasks], загруженной в таблицу. Я хотел бы проанализировать запросы, чтобы увидеть, какие столбцы используются чаще всего в фильтрах WHERE / JOIN, а какие вообще не используются (даже в наборе результатов).

Чтобы усложнить задачу, запросы генерируются с использованием Entity Framework, поэтому у меня есть много псевдонимов, с которыми нужно разобраться:

SELECT 
    [Project1].[id] AS [id], 
    [Project1].[C2] AS [C1], 
    [Project1].[C3] AS [C2], 
    [Project1].[C4] AS [C3], 
    [Project1].[C1] AS [C4]
    FROM ( SELECT 
        [Filter1].[id1] AS [id], 
        CASE WHEN ([Filter1].[exclusive_lock_for_user_id1] IS NULL) THEN 0 WHEN ([Filter1].[exclusive_lock_for_user_id1] = @p__linq__4) THEN 2 ELSE 1 END AS [C1], 
        N'180f23db-3de7-47de-a92d-bed0300badf6' AS [C2], 
        N'Id' AS [C3], 
        N'LockState' AS [C4]
        FROM   (SELECT [Extent1].[id] AS [id1], [Extent1].[created_at] AS [created_at1], [Extent1].[project_id] AS [project_id1], [Extent1].[exclusive_lock_for_user_id] AS [exclusive_lock_for_user_id1], [Extent4].[name] AS [name1]
            FROM        [dbo].[Tasks] AS [Extent1]
            INNER JOIN [dbo].[Projects] AS [Extent2] ON [Extent1].[project_id] = [Extent2].[id]
            LEFT OUTER JOIN [dbo].[WorkItems] AS [Extent3] ON [Extent1].[work_item_id] = [Extent3].[id]
            LEFT OUTER JOIN [dbo].[Tags] AS [Extent4] ON [Extent1].[service_tag_id] = [Extent4].[id]
            LEFT OUTER JOIN [dbo].[Languages] AS [Extent5] ON [Extent3].[source_language_id] = [Extent5].[id]
            LEFT OUTER JOIN [dbo].[Languages] AS [Extent6] ON [Extent3].[target_language_id] = [Extent6].[id]
            LEFT OUTER JOIN [dbo].[Handoffs] AS [Extent7] ON [Extent3].[handoff_id] = [Extent7].[id]
            LEFT OUTER JOIN [dbo].[WorkflowSegments] AS [Extent8] ON ([Extent8].[Discriminator] IN (N'Custom',N'Workflow',N'Translation')) AND ([Extent1].[workflow_segment_id] = [Extent8].[id])
            WHERE ([Extent1].[work_item_id] IS NOT NULL) AND ([Extent2].[is_public] = 1) AND ((1 = [Extent1].[state]) OR (2 = [Extent1].[state])) ) AS [Filter1]
        LEFT OUTER JOIN [dbo].[Projects] AS [Extent9] ON [Filter1].[project_id1] = [Extent9].[id]
        WHERE (([Filter1].[name1] = @p__linq__5) OR (([Filter1].[name1] IS NULL) AND (@p__linq__5 IS NULL))) AND ([Filter1].[created_at1] <= @p__linq__6) AND ([Filter1].[project_id1] IN (@p__linq__7,@p__linq__8,@p__linq__9,@p__linq__10,@p__linq__11,@p__linq__12,@p__linq__13,@p__linq__14,@p__linq__15,@p__linq__16,@p__linq__17,@p__linq__18))
    )  AS [Project1]
    ORDER BY row_number() OVER (ORDER BY [Project1].[id] ASC)

Прежде чем я начну писать сложные запросы для поиска и подсчета столбцов Если в этих запросах указать подстроки имен (и их псевдонимы), кто-нибудь может порекомендовать мне некоторые уже сделанные фрагменты кода или инструменты для анализа SQL проверок сервера, в частности столбца [statement]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...