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 .mdf
file prima dell'incidente.
Dopo il ripristino del sistema, abbiamo reinstallato SQL Server, ripristinato i database di sistema (master, modello, msdb) e posizionato i .mdf
file 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 distribution
database 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 syspublications
sia in master
che 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 .