В каких таблицах используется отслеживание изменений - программирование
Подтвердить что ты не робот

В каких таблицах используется отслеживание изменений

Моя резервная копия не работает: не удалось сбросить таблицу фиксации на диск в dbid 12 из-за ошибки 2601. Более подробную информацию см. в журнале ошибок.

В моей базе данных включено отслеживание изменений. Как я могу определить, какие таблицы он позволяет? я просмотрел 50+ и не могу найти их с собой. sql 2008 r2

Спасибо

4b9b3361

Ответ 1

Чтобы найти таблицы с включенным отслеживанием изменений, выполните следующие script для отслеживаемой базы данных

SELECT s.name AS Schema_name, t.name AS Table_name 
FROM sys.change_tracking_tables ctt
JOIN sys.tables t 
    ON t.object_id = ctt.object_id
JOIN sys.schemas s
    ON s.schema_id = t.schema_id
ORDER BY s.name, t.name

enter image description here

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

sys.change_tracking_tables (Transact-SQL)

sys.change_tracking_databases (Transact-SQL)

Ответ 2

Здесь запрос Брент Озар, который дает вам список скрытых таблиц, поддерживаемых отслеживанием изменений, для хранения изменений, таблицы, используемые в CT, для строк и пространства, занятых в этих скрытых таблицах.

введите описание изображения здесь

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
GO

SELECT 
   sct1.name AS CT_schema,
   sot1.name AS CT_table,
   ps1.row_count AS CT_rows,
   ps1.reserved_page_count*8./1024. AS CT_reserved_MB,
   sct2.name AS tracked_schema,
   sot2.name AS tracked_name,
   ps2.row_count AS tracked_rows,
   ps2.reserved_page_count*8./1024. AS tracked_base_table_MB,
   change_tracking_min_valid_version(sot2.object_id) AS min_valid_version
FROM sys.internal_tables it
JOIN sys.objects sot1 ON it.object_id=sot1.object_id
JOIN sys.schemas AS sct1 ON sot1.schema_id=sct1.schema_id
JOIN sys.dm_db_partition_stats ps1 ON it.object_id = ps1. object_id AND ps1.index_id in (0,1)
LEFT JOIN sys.objects sot2 ON it.parent_object_id=sot2.object_id
LEFT JOIN sys.schemas AS sct2 ON sot2.schema_id=sct2.schema_id
LEFT JOIN sys.dm_db_partition_stats ps2 ON sot2.object_id = ps2. object_id AND ps2.index_id in (0,1)
WHERE it.internal_type IN (209, 210);
GO