Azure SQL: как определить, была ли таблица изменена или создана и кем - PullRequest
0 голосов
/ 25 мая 2018

Моя команда работает с большой базой данных SQL Azure, куда несколько других групп вставляют и читают данные из нашей базы данных.Иногда им нужно создавать или изменять таблицы, но эти действия должны координироваться с нашей командой, и, к сожалению, это не так.У нас был пара сценариев, в которых одна из этих команд обновила хранимую процедуру.В результате их изменения не находятся под нашим контролем исходного кода, и если мы создаем локальную базу данных для разработки или выполняем резервное копирование / восстановление, мы получаем ошибки из-за отсутствующих ссылок.

Мы ищем способ программно определить, является литаблица была изменена или изменена.Это не должно быть в режиме реального времени.Я подумал о том, чтобы читать логи и искать команды alter или create.Я не добился большого успеха, поскольку журналы являются двоичными, и в настоящее время я не знаю, как их анализировать.Моя другая мысль - сохранить копии системных таблиц базы данных и регулярно сравнивать их, чтобы увидеть, изменилось ли что-то.Я не уверен, насколько хорошо это сработает или я смогу определить, кто внес изменения.Мысли, идеи?

Помните, что здесь используется база данных SQL Azure, которая немного более ограничена, чем стандартная база данных SQL.

1 Ответ

0 голосов
/ 26 мая 2018

Вы можете использовать триггеры DDL, как объяснено здесь .

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'Save change on a log'   
   SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)');

Кроме того, вы можете использовать расширенные события для отслеживания изменений схемы.Посмотрите примеры здесь .

Наконец, вы также можете увидеть, как Аудит SQL Azure может соответствовать вашим потребностям.

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