Источник заполнения таблицы SQL-сервера - PullRequest
1 голос
/ 09 октября 2009

У меня есть база данных аудита (созданная кем-то другим).

Что-то ее наполняет данными о размерах таблиц (что имеет смысл, поскольку это база данных аудита).

На сервере SQL слишком много заданий.

Я хочу знать, что заполняет таблицы аудита.

Есть ли что-то вроде sys.comments и т. Д.? который может сказать мне, что такое заполнение таблиц, или мне нужно проверять код внутри каждого задания?

Привет

Manjot

Ответы [ 4 ]

1 голос
/ 09 октября 2009

вы можете попробовать запустить что-то вроде этого:

SELECT DISTINCT
    o.name,o.type_desc
    FROM sys.sql_modules        m 
        INNER JOIN sys.objects  o ON m.object_id=o.object_id
    WHERE m.definition Like '%YourTableName%'
    ORDER BY 2,1

РЕДАКТИРОВАТЬ после ОП упоминал SQL Server 2000

это должно работать на SQl Server 2000:

--remove comments to see the actual text too
SELECT DISTINCT
    o.name --,c1.colid,c1.text
    FROM sysobjects                  o
        INNER JOIN syscomments      c1 ON o.id = c1.id
        --join to next section of code in case search value is split over two rows
        LEFT OUTER JOIN syscomments c2 ON o.id = c2.id AND c2.colid=c1.colid+1
    WHERE c1.text Like '%YourTableName%'
        OR RIGHT(c1.text,100)+LEFT(c2.text,100) Like '%YourTableName%'
    ORDER BY 1--,2
0 голосов
/ 09 октября 2009

Если вы знаете, что приводит к тому, что данные попадают в таблицу аудита, вы можете запустить (очень) короткий сеанс Profiler с базой данных, отфильтровывая его по этой таблице, одновременно инициируя действие. Это даст вам дальнейшие шаги для обратного отслеживания корневого действия.

0 голосов
/ 09 октября 2009

Попробуйте поискать msdb..sysjobsteps в столбце команды для имен таблиц назначения; это будет работать, только если они используют T-SQL для заполнения таблиц. Если они используют пакет служб SSIS (или DTS), это не сработает.

0 голосов
/ 09 октября 2009

скорее всего, он заполняется триггерами на проверенных таблицах.

...