우리는 끌어 오기 구독과 함께 게시 및 해당 아티클을 만드는 데 사용하는 SQL 스크립트가 있습니다. 우리는 명시 적으로 기사를 제외시키지 않고 구독자 (응용 프로그램 DB에 과도한 부하가 걸리지 않도록 보고서에서 사용하는 쿼리에 사용되는 데이터베이스)를 모두 가져 가야하므로 매우 기본입니다.SQL Server 2012 트랜잭션 복제에 대한 구독 데이터베이스에서 클러스터되지 않은 인덱스 생성 활성화
는 게시 기사를 설정하는 부분으로 스크립트는 소스 데이터베이스와 테이블에 대한 각 기사를 통해 루프는 을 실행 다음
DECLARE @Ins nvarchar(255) = 'CALL sp_MSins_'[email protected][email protected]
DECLARE @Del nvarchar(255) = 'CALL sp_MSdel_'[email protected][email protected]rticleName
DECLARE @Upd nvarchar(255) = 'CALL sp_MSupd_'[email protected][email protected]
exec sp_addarticle
@publication = @PublishName,
@article = @Joined,
@source_owner = @articleSchema,
@source_object = @articleName,
@type = N'logbased',
@description = null,
@creation_script = null,
@pre_creation_cmd = N'drop',
@schema_option = 0x00000000080350DF,
@identityrangemanagementoption = N'manual',
@destination_table = @articleName,
@destination_owner = @articleSchema,
@vertical_partition = N'false',
@ins_cmd = @Ins,
@del_cmd = @Del,
@upd_cmd = @Upd
내 문제는 sp_addarticle
저장 프로 시저에 대한 @schema_option
매개 변수입니다 .
**SCHEMA OPTIONS HERE ARE**
—————————————
0x01 Generates the object creation script (CREATE TABLE, CREATE PROCEDURE, and so on). This value is the default for stored procedure articles.
0x02 – Generates the stored procedures that propagate changes for the article, if defined.
0x04 – Identity columns are scripted using the IDENTITY property.
0x08 – Replicate timestamp columns. If not set, timestamp columns are replicated as binary.
0x10 – Generates a corresponding clustered index. Even if this option is not set, indexes related to primary keys and unique constraints are generated if they are already defined on a published table.
0x40 – Generates corresponding nonclustered indexes. Even if this option is not set, indexes related to primary keys and unique constraints are generated if they are already defined on a published table.
0x80 – Replicates primary key constraints. Any indexes related to the constraint are also replicated, even if options 0x10 and 0x40 are not enabled.
0x1000 – Replicates column-level collation
0x4000 – Replicates UNIQUE constraints. Any indexes related to the constraint are also replicated, even if options 0x10 and 0x40 are not enabled
0x10000 – Replicates CHECK constraints as NOT FOR REPLICATION so that the constraints are not enforced during synchronization
0x20000 – Replicates FOREIGN KEY constraints as NOT FOR REPLICATION so that the constraints are not enforced during synchronization
0x8000000 – Creates any schemas not already present on the subscriber
: 0x00000000080350DF
의 내 계산 (비트 OR) 값을 확인하고 다음 옵션은 테이블 기사에 대한 활성화 된 해당 스크립트에 따라 대한 https://blogs.msdn.microsoft.com/repltalk/2010/02/24/decrypting-schema_option-parameters-binary-value-for-a-transactional-replication-article/
:
내가 여기에있는 스크립트를 사용
위에서 볼 수 있듯이 클러스터되지 않은 인덱스를 생성 할 수 있도록하는 0x40 옵션이 테이블 아티클에 대해 설정되어 있어야합니다.
그러나 스냅 샷 에이전트가 시작된 후 생성 된 스냅 샷과 로그 판독기 에이전트는 해당 작업을 수행하며 게시 속성에 액세스하면 테이블 아티클의 "클러스터되지 않은 복사본" 인덱스 "는 false으로 설정됩니다.
누가이 옵션을 테이블 아티클에 사용할 수없는 이유를 알고 있습니까? 나는 technet에 대한 문서를 해석하려고 시도해 왔지만이 플래그가 무시되는 이유를 발견하지 못했다.
우리는 관리 스튜디오 내의 속성 대화 상자에서 옵션을 변경할 수 없습니다. 우리 제품의 경우 클라이언트의 SQL Server 인스턴스에 직접 액세스 할 필요는 없지만, 설치 컴퓨터에서 원격으로 스크립트를 실행해야합니다. powershell,이 스크립트는 하나입니다.
미리 감사드립니다.
스크립트 관련 문제가 보이지 않습니다.이 스레드는 관련되어있는 것처럼 보입니다. – TheGameiswar