MSSQL_REPL027183

Dettagli messaggio

Nome prodotto

SQL Server

Versione prodotto

10.0

Numero di build del prodotto

 

ID evento

27183

Origine evento

MSSQLSERVER

Componente

Motore di database di SQL Server

Nome simbolico

Testo del messaggio

Impossibile enumerare le modifiche negli articoli con filtri di riga con parametri. Se il problema persiste, aumentare il timeout per le query per questo processo, ridurre il periodo di memorizzazione per la pubblicazione e migliorare gli indici delle tabelle pubblicate.

Spiegazione

Questo errore viene generato se si verifica un timeout dell'agente di merge durante l'elaborazione delle modifiche in una pubblicazione filtrata. Il timeout potrebbe essere provocato da uno dei problemi seguenti:

  • Mancato uso dell'ottimizzazione delle partizioni pre-calcolate.

  • Frammentazione dell'indice nelle colonne utilizzate per il filtraggio.

  • Tabelle di metadati di tipo merge di grandi dimensioni, come MSmerge_tombstone, MSmerge_contents e MSmerge_genhistory.

  • Tabelle filtrate non unite in join in una chiave univoca e filtri join che coinvolgono un gran numero di tabelle.

Azione dell'utente

Per risolvere il problema:

  • Aumentare il valore del parametro -QueryTimeOut per l'agente di merge, in modo da consentire la prosecuzione dell'elaborazione mentre si risolve il problema sottostante che provoca l'errore. I parametri dell'agente possono essere specificati nei profili agente e dalla riga di comando. Per ulteriori informazioni, vedere:

  • Se possibile, utilizzare l'ottimizzazione delle partizioni pre-calcolate. Questa ottimizzazione viene utilizzata per impostazione predefinita se vengono soddisfatti alcuni requisiti di pubblicazione. Per ulteriori informazioni sui tali requisiti, vedere Ottimizzazione delle prestazioni dei filtri con parametri con le partizioni pre-calcolate. Se la pubblicazione non soddisfa questi requisiti, è necessario prendere in considerazione l'eventualità di riprogettare la pubblicazione.

  • Specificare la minima impostazione possibile per il periodo di memorizzazione della pubblicazione, poiché la replica non è in grado di eliminare i metadati dei database di pubblicazione e sottoscrizione prima della scadenza del periodo di memorizzazione. Per ulteriori informazioni, vedere Scadenza e disattivazione delle sottoscrizioni.

  • Nell'ambito delle operazioni di manutenzione ai fini della replica di tipo merge, è necessario verificare occasionalmente l'aumento delle tabelle di sistema associate a questo tipo di replica: MSmerge_contents, MSmerge_genhistory e MSmerge_tombstone, MSmerge_current_partition_mappings e MSmerge_past_partition_mappings. Eseguire periodicamente la reindicizzazione di queste tabelle. Per ulteriori informazioni, vedere Riorganizzare e ricompilare gli indici.

  • Verificare che le colonne utilizzate per il filtraggio siano indicizzate correttamente e, se necessario, ricompilare tali indici. Per ulteriori informazioni, vedere Riorganizzare e ricompilare gli indici.

  • Impostare la proprietà join_unique_key per i filtri di join basati su colonne univoche. Per ulteriori informazioni, vedere Filtri join.

  • Limitare il numero massimo di tabelle nella gerarchia dei filtri di join. Se si generano filtri di join di cinque o più tabelle, considerare altre soluzioni: non filtrare tabelle piccole, non soggette a modifica o tabelle che fungono principalmente da tabelle di ricerca. Utilizzare i filtri di join solo tra tabelle che devono essere partizionate tra diverse sottoscrizioni.

  • Apportare un numero minore di modifiche sulle tabelle filtrate tra le sincronizzazioni, oppure eseguire l'agente di merge con maggiore frequenza. Per ulteriori informazioni sull'impostazione delle pianificazioni della sincronizzazione, vedere Impostazione di pianificazioni della sincronizzazione.

Vedere anche

Concetti

Guida di riferimento a errori ed eventi (replica)