Come ripristinare la replica dopo un arresto anomalo del server


8

Avevamo due database su un'istanza di SQL Server 2005 con replica transazionale tra loro (3 tabelle come articoli). Questo server ha funzionato sia come editore che come distributore.

Quindi il RAID sul server non è riuscito. Tuttavia siamo riusciti a staccare e copiare quasi tutti i .mdffile prima dell'incidente.

Dopo il ripristino del sistema, abbiamo reinstallato SQL Server, ripristinato i database di sistema (master, modello, msdb) e posizionato i .mdffile negli stessi percorsi. Quindi è iniziato.

Il problema è apparso con la replica. La cartella Pubblicazioni locali era vuota, sebbene la cartella Abbonamenti locali contenesse l'abbonamento in questione. Quando ho provato ad aggiungere una nuova pubblicazione ho ottenuto:

La procedura guidata Nuova pubblicazione ha riscontrato uno o più errori durante il recupero dei nomi delle pubblicazioni.

Si è verificata un'eccezione durante l'esecuzione di un'istruzione o batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Nome oggetto "dbo.syspublications" non valido. (Microsoft SQL Server, errore: 208)

Ho deciso di provare a rimuovere l'abbonamento sinistro (eventualmente sono riuscito a) e disabilitare la pubblicazione e la distribuzione sul server, che mi ha dato:

SQL Server non ha potuto disabilitare la pubblicazione e la distribuzione su "someserver".

Nome oggetto non valido 'dbo.syssubscriptions'. Il conteggio delle transazioni dopo EXECUTE indica che manca un'istruzione COMMIT o ROLLBACK TRANSACTION. Conteggio precedente = 0, conteggio corrente = 1. Il conteggio delle transazioni dopo EXECUTE indica che manca un'istruzione COMMIT o ROLLBACK TRANSACTION. Conteggio precedente = 0, conteggio corrente = 1. Il conteggio delle transazioni dopo EXECUTE indica che manca un'istruzione COMMIT o ROLLBACK TRANSACTION. Conteggio precedente = 0, conteggio corrente = 1. Il conteggio delle transazioni dopo EXECUTE indica che manca un'istruzione COMMIT o ROLLBACK TRANSACTION. Conteggio precedente = 0, conteggio corrente = 1. Il conteggio delle transazioni dopo EXECUTE indica che manca un'istruzione COMMIT o ROLLBACK TRANSACTION. Conteggio precedente = 0, conteggio corrente = 1. Contesto del database modificato in "master". (Microsoft SQL Server, errore: 208)

Sembra che alcune informazioni non siano state recuperate dai backup del database di sistema (probabilmente nel distributiondatabase potrebbe mancare qualcosa).

Inoltre ho cercato di seguire la risposta fornita in grado di disabilitare la pubblicazione e la distribuzione . Ma senza successo. Ho provato a creare syspublicationssia in masterche distribution, ma non è cambiato nulla.

Quindi, come posso far funzionare la replica su questo server?

Ho provato a pubblicare qualche altro database sul server e ha funzionato. Quindi il problema sembra essere collegato al database pubblicato. Come posso chiarire per gestire creare una nuova pubblicazione su di esso?

System Tables nella sottocartella del database dei problemi mancano le tabelle di replica, che vengono create quando viene pubblicato un database.

Nel monitor di replica posso vedere quei vecchi abbonamenti, mentre non sono disponibili nella cartella Replication .

Risposte:


4

Alla fine ho semplicemente fatto quello che voleva il server, ovvero ho creato tutte le tabelle "publishing" (* dbo.MSpeer _ ** e * dbo.sys **) nel database problematico (quello che era l'editore), tramite Script Table Come -> CREA nella finestra di dialogo. Grazie a questo server mi ha permesso di disabilitare la pubblicazione e la distribuzione. Quindi avevo solo bisogno di riconfigurare la replica.

Spero, la prossima volta che si arresta in modo anomalo (in realtà spero che non lo faccia), saremo abbastanza saggi da eseguire il backup completo delle tabelle coinvolte nella replica.


Ulteriori informazioni di Zane , originariamente lasciate in un commento:

Le tabelle dbo.MSpeer_ * e dbo.sys * possono anche essere create configurando il distributore / editore su un server diverso con SQL Server installato. Questo creerà queste tabelle nel database che hai impostato per la pubblicazione. Vedi -> Tabelle -> Tabelle di sistema in SSMS.

Quindi, generare gli schemi per tutte queste tabelle e quindi creare queste tabelle nel database problematico che consentirà di disabilitare la distribuzione e la pubblicazione e riconfigurare il distributore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.