Добавление индекса FK к существующей таблице в топологии репликации слиянием - PullRequest
0 голосов
/ 03 июня 2010

У меня довольно большая таблица, которую мы реплицируем примерно до 120 подписчиков. FK в этой таблице не имеет индекса, и когда я выполнил план выполнения для запроса, который вызывал проблемы, он сказал следующее ->

/*
Missing Index Details from CaseNotesTimeoutQuerys.sql - mylocal\sqlexpress.MATRIX (WWCARES\pschaller (54))
The Query Processor estimates that implementing the following index could improve the query cost by 99.5556%.
*/

/*
USE [MATRIX]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[tblCaseNotes] ([PersonID])

GO
*/

Я хотел бы добавить это, но я боюсь, что это приведет к повторной инициализации. Может ли кто-нибудь проверить или подтвердить мои опасения? Это вообще так работает или мне нужно запустить скрипт на каждом подписчике?

Любое понимание будет оценено.

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Добавление ограничения FK для поля НЕ БУДЕТ форсировать повторную инициализацию подписки. Это полный код, который мы используем, когда (1) добавляем поле в таблицу и (2) определяем это поле как FK:

use myDb

alter table Tbl_myTable
    add 
    id_myOtherTable uniqueIdentifier Null
go
alter table Tbl_myTable
    add 
        constraint Tbl_myTable_myOtherTableP foreign key(id_myOthertable)
        references dbo.tbl_myOtherTable (id_myOtherTable)
go

Эти инструкции (добавление поля, добавление ограничения FK) реплицируются на подписывающиеся базы данных без повторной инициализации. Если вам не нужно добавлять поле, вы должны обязательно проверить, что ограничение будет действовать для всех баз данных. Если по той или иной причине подписчик (подписчики) не соблюдает ограничение, установленное для издателя (p), тогда ограничение не будет распространено, и подписка будет остановлена. Затем вам нужно будет упорядочить данные вручную для того, чтобы они принимали ограничение, распространяемое из (p)

1 голос
/ 03 июня 2010

Добавление индекса не должно изменять таблицу, чтобы вызвать повторную инициализацию, но я советую вам настроить тестовую версию.

...