FIX: messaggio di errore quando si esegue l'agente di distribuzione per sincronizzare i sottoscrittori con server di pubblicazione in Microsoft SQL Server 2005 o SQL Server 2008: "I dati tabulari in ingresso flusso (TDS, Tabular Data Stream) remote procedure call (RPC) flusso del protocollo non Ŕ corretto"

Traduzione articoli Traduzione articoli
Identificativo articolo: 973103 - Visualizza i prodotti a cui si riferisce l?articolo.
Microsoft distribuisce le correzioni di Microsoft SQL Server 2005 come un unico file scaricabile. PoichÚ le correzioni sono cumulative, ogni nuova versione contiene tutti gli aggiornamenti rapidi e tutte le correzioni protezione rilasciate con SQL Server 2005 precedente versione di correzione.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

╚ possibile utilizzare la replica transazionale in Microsoft SQL Server 2005. Quando si esegue l'agente di distribuzione per sincronizzare i sottoscrittori con il server di pubblicazione, l'agente di distribuzione potrebbe non riuscire e visualizzati il seguente messaggio di errore nella cronologia dell'agente di distribuzione o nel Registro di output:

42000-I dati tabulari in arrivo flusso (TDS, Tabular Data Stream) remote procedure call (RPC) flusso del protocollo non Ŕ corretto. In questa richiesta RPC sono stati forniti troppi parametri. Il valore massimo Ŕ 2100. 8003

Quando questi errori si verificano ripetutamente, pu˛ incidere sulle prestazioni. Quando si verifica questo errore, l'agente di distribuzione eseguirÓ l'elaborazione di tentativi per provare la stessa comandi nuovamente. Pertanto, l'agente di distribuzione utilizza pi¨ tempo per sincronizzare i sottoscrittori con il server di pubblicazione, perchÚ ogni batch problematica viene provato per due volte.

Cause

Quando l'agente di distribuzione elabora i comandi in sospeso nel database di distribuzione, viene utilizzato il parametro CommitBatchSize e il parametro CommitBatchThreshold per determinare come molti comandi sono raggruppate come un'esecuzione durante l'invio agli utenti sottoscrittori di tali comandi.

Il parametro di CommitBatchSize Ŕ il numero di transazioni da inviare agli utenti sottoscrittori prima di un'istruzione COMMIT . Il valore predefinito Ŕ 100. Il parametro CommitBatchThreshold Ŕ il numero di comandi di replica da inviare agli utenti sottoscrittori prima di un'istruzione COMMIT . Il valore predefinito Ŕ 1000.

PoichÚ una singola transazione pu˛ contenere un unico comando o pu˛ contenere molti comandi, impostando il parametro CommitBatchSize a 100, impostando il parametro CommitBatchThreshold a 1000 potrebbero consentire di diversi migliaia comandi vengano recapitati in un singolo batch di comandi.

Quando in cui un articolo viene aggiunto a una pubblicazione, il @ ins_cmd , @ upd_cmd e @ del_cmd parametri di tipo di comando di replica vengono specificati per il sp_addarticle memorizzati procedura per determinare la modalitÓ di inviare comandi al server di sottoscrizione. In aggiunta per i parametri CommitBatchSize e CommitBatchThreshold , l'agente di distribuzione Ŕ inoltre considerare che non esistono requisiti di SQL Native Client provider OLE DB in cui il numero di parametri pu˛ essere associato in un singolo batch di comandi viene inviato al server di sottoscrizione massimo.

╚ presente un massimo di parametri 2100 che pu˛ essere utilizzato in un singolo batch di comandi. L'agente di distribuzione pertanto automaticamente suddivide batch di grandi dimensioni in sufficiente le istruzioni per il batch in modo che non venga superato il massimo di parametri a 2100. Quindi, i comandi rimanenti in batch di comandi vengono spostati automaticamente nel batch di esecuzione successivo.

Questo problema si verifica quando l'agente di distribuzione consente di calcolare in modo errato il numero di parametri necessari per fornire un batch di comandi. Ci˛ si verifica se l'agente di distribuzione viene utilizzato il dinamico stored procedure sp_executesql come un wrapper per un batch di molti comandi replicati.

Se del comando replicato contiene pi¨ di 2098 parametri nel comando batch e il comando batch viene eseguito il wrapping utilizzando la procedura di sp_executesql memorizzati per inviare il batch come un'istruzione SQL creata in modo dinamico, l'agente di distribuzione non verrÓ incluso nel calcolo che la stored procedure sp_executesql memorizzati procedura esigenze due ulteriori parametri associati per funzionare. Di conseguenza, il numero totale di parametri Ŕ possibile che pu˛ essere maggiore 2100 parametri.

L'agente di distribuzione Ŕ possibile utilizzare questa opzione di recapito dell'istruzione SQL creata in modo dinamico incapsulato con la stored procedure sp_executesql stored procedure nelle seguenti situazioni:
  • L'articolo contiene colonne BLOB (Binary Large Object), ad esempio testo o colonne di immagine.
  • Pi¨ di un tipo di comando di replica viene utilizzato in tutti gli articoli. Ad esempio, se un articolo utilizza il tipo di comando SQL consegna replica, mentre un altro articolo consente di utilizzare la procedura sp_MSins_procedure memorizzati come tipo di comando di replica.

Risoluzione

SQL Server 2005

La correzione di questo problema Ŕ stata rilasciata prima in un aggiornamento cumulativo 5 per SQL Server 2005 Service Pack 3. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
972511 5 Pacchetto di aggiornamento cumulativo per SQL Server 2005 Service Pack 3
Nota PoichÚ le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni protezione rilasciate con SQL Server 2005 precedente versione di correzione. Microsoft consiglia di considerare applicare la correzione rapida per la versione pi¨ recente che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
960598Versioni di SQL Server 2005 rilasciate dopo il rilascio di SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 per service pack specifici di SQL Server vengono creati gli aggiornamenti rapidi. ╚ necessario applicare un hotfix di SQL Server 2005 Service Pack 3 a un'installazione di SQL Server 2005 Service Pack 3. Per impostazione predefinita, qualsiasi hotfix fornito in un service pack di SQL Server Ŕ incluso nel successivo service pack SQL Server.

SQL Server 2008

SQL Server 2008

importante ╚ necessario utilizzare questa correzione, se si esegue la versione di SQL Server 2008.

La correzione di questo problema Ŕ stata rilasciata prima di aggiornamento cumulativo 7. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo per SQL Server 2008, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
973601Pacchetto di aggiornamento cumulativo 7 per SQL Server 2008
Nota PoichÚ le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni protezione rilasciate con SQL Server 2008 precedente versione di correggere. Si consiglia di prendere in considerazione applicare la correzione rapida per la versione pi¨ recente che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
956909Versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008

SQL Server 2008 Service Pack 1 (SP1)

importante ╚ necessario utilizzare questa correzione, se si esegue SQL Server 2008 Service Pack 1 (SP1).

La correzione di questo problema Ŕ stata rilasciata prima in un aggiornamento cumulativo 4 per SQL Server 2008 Service Pack 1. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
973602Pacchetto di aggiornamento cumulativo 4 per SQL Server 2008 Service Pack 1
Nota PoichÚ le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni protezione rilasciate con SQL Server 2008 precedente versione di correggere. Microsoft consiglia di considerare applicare la correzione rapida per la versione pi¨ recente che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
970365Versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 per service pack specifici di SQL Server vengono creati gli aggiornamenti rapidi. ╚ necessario applicare un hotfix di SQL Server 2008 Service Pack 1 a un'installazione di SQL Server 2008 Service Pack 1. Per impostazione predefinita, qualsiasi hotfix fornito in un service pack di SQL Server Ŕ incluso nel successivo service pack SQL Server.

Workaround

Per aggirare il problema, utilizzare uno dei seguenti metodi:

Metodo 1

Per ridurre le occorrenze di questo errore a un livello pi¨ tollerabile, diminuire il valore dei parametri CommitBatchSize e CommitBatchThreshold per agente di distribuzione. L'obiettivo consiste nel limitare il numero massimo di comandi al batch di commit, per evitare di superare 2.100 parametri per ogni batch di comandi.

Ad esempio, il parametro CommitBatchSize il valore predefinito Ŕ 100. ╚ possibile modificarla a 10. Il valore predefinito del parametro CommitBatchThreshold Ŕ 1000. ╚ possibile modificarla a 100.

Questi valori decrescenti pu˛ sulle prestazioni poichÚ batch non vengono recapitati nelle dimensioni di origine ottimali. Tuttavia, questo metodo consente di evitare le condizioni di errore sono descritti nella sezione causa.

╚ possibile modificare i parametri CommitBatchSize e CommitBatchThreshold utilizzando uno dei metodi descritti di seguito:
  • Aggiungere i parametri CommitBatchSize e CommitBatchThreshold nel comando per il passaggio di processo Distribution Agent in SQL Server Agent
  • Modificare i parametri CommitBatchSize e CommitBatchThreshold quando si crea un nuovo profilo di agente da nella finestra di dialogo ProprietÓ server di distribuzione o da Monitoraggio replica.
Per ulteriori informazioni su come modificare questi parametri, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn.microsoft.com/en-us/library/ms151326(SQL.90).aspx


Se si desidera evitare completamente questo errore in riesecuzione successive del batch, Ŕ necessario pianificare per lo scenario peggiore. A tale scopo, trovare l'articolo pi¨ esteso contiene la maggior parte delle numero di colonne nella pubblicazione. Ad esempio, se si dispone di una tabella contenente 100 colonne pubblicato nella pubblicazione transazionale, un singolo comando replicato a fronte di tale tabella pu˛ contenere 100 parametri. ╚ necessario ridurre l'impostazione del parametro CommitBatchThreshold in modo che il numero massimo di parametri che l'agente di distribuzione deve inviare in un singolo batch sia al massimo 2098. Se tutte le colonne sono interessate dal comando, l'impostazione del parametro CommitBatchThreshold deve essere 20 o pi¨ piccoli per consentire un massimo di parametri di 2000 per ogni batch di 20 comandi a fronte di tale tabella.

Metodo 2

Utilizzare il tipo di comando di replica stesso per tutti gli articoli nella pubblicazione quando si imposta la pubblicazione. Evitare di combinare i meccanismi di consegna di comando per gli articoli nella stessa pubblicazione per ridurre la necessitÓ dell'agente di distribuzione selezionare il recapito del batch, eseguire la procedura sp_executesql memorizzati come wrapper in un batch di comandi.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Informazioni

Per ulteriori informazioni sulla replica di agente di distribuzione, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn.microsoft.com/en-us/library/ms147328(SQL.90).aspx

Per ulteriori informazioni sui profili agente di replica, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn.microsoft.com/en-us/library/ms151223(SQL.90).aspx

Riferimenti

Per ulteriori informazioni sul modello di manutenzione incrementale per SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
935897Un modello di manutenzione incrementale Ŕ disponibile dal team di SQL Server per fornire aggiornamenti rapidi per i problemi segnalati
Per ulteriori informazioni su come ottenere SQL Server 2005 Service Pack 3, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
913089Come ottenere il service pack pi¨ recente per SQL Server 2005
Per ulteriori informazioni sulle nuove funzionalitÓ in SQL Server 2005 SP3 e sui miglioramenti di SQL Server 2005 SP3, visitare il sito di Web di Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442
Per ulteriori informazioni sullo schema di denominazione degli aggiornamenti di SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
822499Nuovo schema di denominazione per i pacchetti di aggiornamento software di Microsoft SQL Server
Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

ProprietÓ

Identificativo articolo: 973103 - Ultima modifica: lunedý 17 agosto 2009 - Revisione: 1.2
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Chiavi:á
kbmt kbsurveynew kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver KB973103 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 973103
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com