enter code here
Хорошо, так что никто не ответил на мой вопрос .. Я ждал день, и даже не комментарий.В любом случае, я работал над ответом сам, так что вот, надеюсь, по крайней мере, получить некоторые голоса за это!: P
2 Логические параметры:
1) Отключите CDC, а затем включите CDC при изменении группы файлов. Теперь это кажется логичным, но вы потеряете все предыдущие данные CDC,и может потерять CDC Meta Date.Тем не менее, это может быть полезно для некоторых, поэтому найдите ниже:
Declare @RowNo Int, @RowCount Int, @Capture_Instance Varchar(200), @strSQL NVarchar(1000)
Set @RowCount = 0
Set @RowNo = 1
Set @Capture_Instance = ''
Set @strSQL = ''
Declare @myTable Table (Capture_instance Varchar(200), RowNo Int)
Insert Into @myTable
Select capture_instance, ROW_NUMBER() Over(Order By Source_Object_Id) As RN From cdc.change_tables
Set @RowCount = @@ROWCOUNT
While @RowNo <= @RowCount
Begin
Select @Capture_Instance = Capture_instance From @myTable Where RowNo = @RowNo
Set @strSQL = 'sys.sp_cdc_disable_table @source_schema = N''' + Left(@Capture_Instance, CharIndex('_', @Capture_Instance) - 1) + ''',
@source_name = N''' + SubString(@Capture_Instance, CharIndex('_', @Capture_Instance) + 1, Len(@Capture_Instance)) + ''',
@capture_instance = N''All'''
Exec sp_ExecuteSQL @strSQL /*Diabling the sp_cdc*/
Set @strSQL = 'sys.sp_cdc_enable_table @source_schema = N''' + Left(@Capture_Instance, CharIndex('_', @Capture_Instance) - 1) + '''
,@source_name = N''' + SubString(@Capture_Instance, CharIndex('_', @Capture_Instance) + 1, Len(@Capture_Instance)) + '''
,@role_name = N''' + 'cdc_Admin' + '''
,@fileGroup_Name = N''' + 'CDCFileGroup' + ''';'
Exec sp_ExecuteSQL @strSQL /*Enabling the sp_cdc, with a new CDCFileGroup(this filegroup would have been created before running this script)*/
Set @RowNo += 1
End
2) Это правильное решение! Создание уникального кластеризованного индекса при изменении группы файлов - это сохраняет предыдущийДанные CDC и все остальное.Вам просто нужно убедиться, что файловая группа уже создана и содержит файлы, размер которых вы установили.(для получения дополнительной информации., спросите в комментарии).Сценарий для этого:
/*CREATING CLUSTERED INDEX, AND DROPPING CLUSTERED INDEX, TOGETHER*/
CREATE UNIQUE CLUSTERED INDEX dbo_YourTableName_CT_clustered_idx
ON cdc.dbo_YourTableName_CT ( [__$start_lsn] ASC,
[__$seqval] ASC,
[__$operation] ASC)
WITH (DROP_EXISTING = ON)
ON CDCFileGroup /*Your File Group Name*/