2016-10-11 2 views
0

Есть ли способ я могу скрипт следующую идею, используя T-SQL:Процесс проверки новых/удаленных таблиц в базе данных

У меня есть начало скрипта, который идентифицирует таблицы в настоящее время в базе данных, и их соответствующие счетчики строк, как показано ниже:

SELECT o.name AS 'TableName' ,i.rows AS 'Records' 
    FROM sys.tables as o LEFT JOIN sys.sysindexes as i 
    ON i.id = o.object_id 
    WHERE o.type IN ('U') 
    AND i.indid in (0,1) 

Но я хотел бы создать что-то, где я могу флаг вверх любые новые таблицы, которые появляются в базе данных (вроде как вчера против сегодня) - также, любые, которые были недавно удалены. Почти работает как история журналов журналов.

Таким образом, конечным результатом будет список всех текущих таблиц + новый + удаленный (со вчерашнего дня).

Приветствия заранее.

+0

[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- joins.aspx) - стиль старого стиля * разделенный запятыми список таблиц * был заменен на * правильный * ANSI 'JOIN' синтаксис в ANSI - ** 92 ** SQL Standard (** более 20 лет **) назад), и его использование не рекомендуется –

+1

. Также: с SQL Server ** 2005 **, вы должны ** прекратить использование ** представления 'sysobjects' - использовать сфокусированный вид каталога в схеме' sys', например 'sys. tables' или 'sys.types' –

+0

Вы запрашиваете количество удаленных таблиц в том же формате, что и у вас – TheGameiswar

ответ

0

Вы можете определить из sys.objects, когда таблица была создана или изменена (create_date, modified_date), но я думаю, что вам не повезло с этой точки зрения на удаленных таблицах.

Этот вид аудита лучше всего обрабатывается DDL triggers. Вы можете создать таблицу типа dbo.ddl_change_log и заполнить ее триггером DDL.

Смежные вопросы