/ / SQL Server: Як перелічити змінені стовпці з відстеженням змін? - sql-сервер, відстеження змін

SQL Server: Як перелічити змінені стовпці з відстеженням змін? - sql-сервер, відстеження змін

Я використовую SQL Server 2012 Standard Edition, і я активував функцію "Відстеження змін" на таблиці.

Коли я перераховую зміни в таблиці з функцією CHANGETABLE, у мене є властивість SYS_CHANGE_COLUMNS з двійковими даними

0x0000000045000000460000004700000048000000

Як дізнатися, які стовпці змінилися?

Відповіді:

2 для відповіді № 1

Оскільки стовпчик є бітовою маскою, що складається зідентифікатори стовпців усіх стовпців, які були змінені, важко зрозуміти, з чого складаються. Насправді, MSDN говорить, що не варто запитувати SYS_CHANGE_COLUMNS прямо тут: https://msdn.microsoft.com/en-us/library/bb934145.aspx

Це двійкове значення не слід інтерпретувати безпосередньо.

Однак, коли ви виявляєте зміни для цілей сповіщення, зазвичай споживач сповіщень має гарне уявлення про те, які стовпці вони хочуть змінити.

Для цього використання використовуйте CHANGE_TRACKING_IS_COLUMN_IN_MASK функція

-- Get the column ID of my column
declare @MyColumnId int
set @MyColumnId = columnproperty(object_id("MyTable"), "MyColumn", "ColumnId")

-- Check if it"s changed
declare @MyColumnHasChanged bit
set @MyColumnHasChanged = CHANGE_TRACKING_IS_COLUMN_IN_MASK (MyColumnId, @change_columns_bitmask);

Якщо CHANGE_TRACKING_IS_COLUMN_IN_MASK повідомить мені, чи змінився стовпець, як я можу написати сценарій, який каже мені, які стовпці змінилися? I мають близько 50 атрибутів для кожної таблиці.

Я боюся, вам доведеться прокрутити всі стовпці, які можуть вас зацікавити. Змінити захоплення даних (CDC) або Тригери