Введение:
Как администратор баз данных SQL Server, важно отслеживать изменения, внесенные в объекты баз данных по разным причинам. Будь то обеспечение плавного развертывания объектов из среды разработки в производственную среду или выявление потенциальных проблем, вызванных несанкционированными изменениями, наличие системы для отслеживания изменений объектов может значительно улучшить управление вашими базами данных.
Проблема:
До SQL Server 7 не было встроенного механизма для удобного отслеживания изменений объектов. Таблица sysobjects предоставляла ограниченную информацию, а вновь введенные представления INFORMATION_SCHEMA не включали дату создания или изменения объектов. Это создавало проблему для администраторов баз данных, которым нужно было вести запись об изменениях объектов.
Решение:
После обширного исследования и экспериментов был обнаружен метод отслеживания изменений объектов с использованием таблицы sysobjects. Путем изучения полей base_schema_ver и schema_ver, которые увеличиваются на 16 каждый раз, когда объект изменяется, стало возможным определить, когда объект был изменен.
Реализация:
Для реализации отслеживания изменений объектов необходимо выполнить несколько шагов:
- Создайте таблицу для хранения справочных данных об объектах. Эта таблица будет содержать последние известные значения для каждого объекта.
- Разработайте хранимую процедуру для загрузки текущих значений из таблицы sysobjects в справочную таблицу.
- Создайте другую хранимую процедуру для сравнения текущей информации в таблице sysobjects с справочной таблицей и записи любых различий в таблицу журнала.
- Запланируйте задание для выполнения процедуры сравнения, а затем процедуры загрузки, обеспечивая проверку новых объектов сначала, а затем обновление справочной таблицы.
Ограничения:
Важно отметить, что эта система не отслеживает фактические изменения, внесенные в объекты. Она служит системой оповещения, чтобы уведомлять администраторов о том, что произошло изменение. Чтобы определить конкретные изменения, такие как время их возникновения, их характер и автор, следует использовать систему контроля версий или другие средства отслеживания изменений кода в сочетании с этой системой.
Заключение:
Внедрение системы отслеживания изменений объектов в SQL Server может значительно улучшить управление и контроль баз данных. Благодаря осведомленности об изменениях и наличию записи о времени их возникновения администраторы могут лучше поддерживать свои команды и обеспечивать стабильность своих приложений. Хотя это решение использует неподдерживаемую функцию, оно доказало свою эффективность на практике. Обратная связь и предложения всегда приветствуются, и я надеюсь, что вы найдете эту систему полезной в своих собственных средах SQL Server.
Автор: Стив Джонс
Дата: Март 2001