Пару дней назад на работе возникала необходимость в одном из проектов отслеживания изменений в базе данных. Задача такая: есть насколько таблиц, которые нужно мониторить на предмет операций Insert, update и delete. Сначала, решили исползовать аудит, но он не давал нам необходимой информации, такой как с какого на какое значение быль выполнен update или что именно было удалено и т.п. Поискав решения вспомнил о SQL Server СDC (Change Data Capture). Никогда раньше не использовал эту службу и вот что нарыл:
use SRPV
go
Активация CDC-функционала для конкретной базы данных
exec sys.sp_cdc_enable_db
Ппроверяем что значение поля is_cdc_enabled в sys.databases изменилось для БД SRPV. Это признак того что для указанной БД активирована служба CDC.
select name, is_cdc_enabled from sys.databases
Активируем CDC для конкретной таблицы (в данном примере это таблица WaggonsSend). Будет созданно 2 job-а. cdc.test_new_capture и cdc.test_new_cleanup
Для добавления таблицы указываем ее имя в @source_name.
exec sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 'WaggonsSend' ,
@role_name = 'CDC_Admins',
@supports_net_changes = 1
Проверяем таблица установлена источником СDC
select name, type, type_desc, is_tracked_by_cdc, * from sys.tables
where name in ('dbo_WaggonsSend')
Просмотр всех объектов созданных для обеспечения функционирования CDC.
select o.name, o.type, o.type_desc, s.name from sys.objects o
join sys.schemas s on s.schema_id = o.schema_id
where s.name = 'cdc'
Просмотр изменений в таблице можно просмотреть так:
use SRPV
DECLARE @begin_lsn binary(10), @end_lsn binary(10)
SET @begin_lsn = sys.fn_cdc_get_min_lsn('dbo_WaggonsSend')
SET @end_lsn = sys.fn_cdc_get_max_lsn()
select tm.tran_begin_time,
tm.tran_end_time,
tm.tran_id,
CASE __$operation
when 1 then 'delete'
when 2 then 'insert'
when 3 then 'update (before the update)'
when 4 then 'update (after the update)'
end operation,
ch.*
from cdc.fn_cdc_get_all_changes_dbo_WaggonsSend(@begin_lsn, @end_lsn, 'all update old') ch
left join cdc.lsn_time_mapping tm on ch.__$start_lsn=tm.start_lsn
Просмотр джобов отвечающих за работу CDC (здесь можно просмотреть такие параметры как
pllinginterval - с какой периодичностью в сек. движок будет сканировать транзакшн лог и заполнять хранилище информации
retention - количество минут сколько будет храниться инфа в хранилище. Отчисткой занимается джоб cdc.test_new_cleanup, запускаемый 1 разв неделю)
use msdb
select * from dbo.cdc_jobs
Редактирование этих параметроов
EXEC [sys].[sp_cdc_change_job]
@job_type = N'capture',
@pollinginterval = 5 --раз в пять секунд движок CDC будет сканировать транзакшн лог и пополнять хранилище информацией. Делается это джобом cdc.test_new_capture, который запущен всегда, т.е. один раз запущен и находится в статусе Running постоянно.
EXEC [sys].[sp_cdc_change_job]
@job_type = N'cleanup',
@retention = 10080 -- 10080 минут - это 7 дней. Именно столько я установил для хранения истории в хранилище.
Просмотр всех таблиц на которых сконфигурированна CDC в текущей БД
EXECUTE sys.sp_cdc_help_change_data_capture;
Хранилище это системные таблицы, созданные в процессе конфигурирования CDC. Информацию из можно селектить как с помощью хп cdc.fn_cdc_get_all_changes_dbo_WaggonsSend (синтаксис я указывал выше) так и напрямую
select * from cdc.dbo_WaggonsSend_CT
where bla-bla-bla
А здесь подробнейшая информация на эту тему =))
«Счастье — это когда утром с радостью идешь на работу, а вечером с радостью идешь домой» /Юрий Никулин/
Здесь я публикую небольшие мои заметки, а также интересные ссылки, все что связанно с моей профессией. Для перехода на персональный сайт, используйте ссылку http://k-semenenko.blogspot.com
четверг, 25 ноября 2010 г.
суббота, 20 ноября 2010 г.
Экзамены по новой версии SQL Server code-named Denali
Экзамены по новой версии SQL Server code-named Denali: "
По новой версии SQL Server 'Denali' планируются к выпуску следующие экзамены:
70-460 PRO: Designing, Optimizing and Maintaining a Database Administrative Solution Using Microsoft SQL Server 11
70-461 PRO: Designing Database Solutions and Data Access Using Microsoft SQL Server 11
70-586 TS: Microsoft SQL Server 11, Implementation and Maintenance
70-587 TS: Microsoft® SQL Server 11, Database Development
70-588 TS: Microsoft SQL Server 11, Business Intelligence Development and Maintenance
Post from: http://shomin.info
Экзамены по новой версии SQL Server code-named Denali
Related posts:
- SQL Server code-named “Denali” Выпущен CTP1 новой версии SQL Server - “Denali”. Подробности здесь: code-named “Denali” web page CTP Books Online Post from: http://shomin.infoSQL Server code-named “Denali”...
- SQL Server 2005 Подробности смотрите в моей публикации Курсы SQL Server 2005 – что выбрать? MCTS: SQL Server 2005 Требования: Экзамен 70-431 TS: Microsoft SQL Server 2005 - Implementation and Maintenance Курсы для подготовки: Курс 2778: Writing Queries Using Microsoft SQL Server 2008 Transact-SQL (3 дня) (этот курс рассчитан на обе версии...
- Экзамены по Visual Studio 2010 Начато создание экзаменов по Visual Studio 2010. Планируются к выпуску следующие экзамены: 70-511 TS: Microsoft .NET Framework 4, Windows Applications Development (WPF) 70-515 TS: Microsoft .NET Framework 4, Web Applications Development 70-513 TS: Microsoft .NET Framework 4, Windows Communication Foundation Development 70-516 TS: Microsoft .NET Framework 4, Accessing Data with...
среда, 10 ноября 2010 г.
Мелкая, но приятная фича SQL Server Denali - Sequence numbers!
Новая версия SQL Server-а дает возможность заюзать нам SEQUENCE NUMBERS- генерация последовательных значений и на всегда забыть чтото типа NextID или GenID или identity полей. Приятного чтения =)) http://msdn.microsoft.com/en-us/library/ff878058%28v=SQL.110%29.aspx
--
BR Semenenko Konstantin
--
BR Semenenko Konstantin
Вышла CTP версия нового SQL Server Denali и SQL Server 2008 R2 Parallel Data Warehouse.
Что нового в SQL Server Denali CTP относительно R2? (статья на русском ) http://www.gotdotnet.ru/blogs/DeColores/8895/
Что такое SQL Server 2008 R2 Parallel Data Warehouse - http://blogs.technet.com/b/dataplatforminsider/archive/2010/11/09/parallel-data-warehouse-is-now-available.aspx
--
BR Semenenko Konstantin
Подписаться на:
Сообщения (Atom)