"Msg 8992" mesaj de eroare și metadatele inconsistente în SQL Server sistem de cataloage

Traduceri articole Traduceri articole
ID articol: 2787112 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

Simptome

Vă confruntați cu unul dintre următoarele probleme în Microsoft SQL Server.

Numarul 1

Presupune să creați o inconsecvență în sistem de metadate, când actualizați manual tabelele de sistem într-o bază acoperire de date SQL Server. Apoi, încercați să executați comanda DBCC CHECKDB pentru a identifica inconsistențe în sistem de metadate tabele. În această situație, este returnat următorul mesaj de eroare:
MSG 8992, nivel 16, stat 1, linia 1
Verificați Catalogul Msg 3853, stat 1: Atribut (referenced_object_id =ID obiect>, key_index_id =Index ID>) de rând (object_id =ID obiect>) în sys.foreign_keys nu are un rând de potrivire (object_id =ID obiect>, index_id =Index ID>) în sys.indexes.

Numarul 2

Când actualizați tabelele de sistem din SQL server, primiți un mesaj de avertizare care seamănă cu următorul:
Avertisment: Sistem tabel IDID tabel> a fost actualizat direct în baza acoperire de date de IDID-ul bazei acoperire de date> și memoria cache coerența nu poate au fost menținute. SQL Server trebuie să fie repornit.
În această situație, dacă executați o comanda DBCC CHECKDB sau DBCC CHECKCATALOG , mesajul de avertizare, precum ?i data ?i ora la care în cataloage de sistem au fost modificate ultima sunt returnate. În plus, următorul mesaj de avertizare este, de asemenea, înregistrate în jurnalul de SQL Server:
Avertisment: Catalogul de sistem au fost actualizate direct în baza acoperire de date de IDID-ul bazei acoperire de date>, cel mai recent, laJurnal de marcă de timp>.
Notă Această informație este stocată în antetul acoperire de date și persistă pentru durata de viață a bazei acoperire de date.

Cauză

Această problemă se produce deoarece SQL Server nu acceptă actualizări manual pentru tabele de sistem. Tabelele de sistem trebuie actualizată numai de motorul de baze acoperire de date SQL Server.

Notă Puteți vizualiza datele în tabele de sistem prin utilizarea vizualizărilor de Catalogul de sistem.

Rezoluție

Pentru a rezolva această problemă, utilizați una dintre următoarele metode.

Metoda 1

Dacă aveți o copie curată de baza acoperire de date, restaurarea bazei acoperire de date din copia de rezervă.

Notă Această metodă funcționează numai în cazul în care copia de rezervă nu are incoerențe în metadate.

Metoda 2

Dacă nu se poate restaura baza acoperire de date dintr-o copiere de rezervă, exporta datele și obiectele la o bază acoperire de date. Apoi, se transferă conținutul bazei acoperire de date actualizate manual în noua bază acoperire de date. NotăNu se poate repara inconsistențe în sistem de cataloage utilizând opțiunile de reparare în comenzile DBCC CHECKDB . Prin urmare, deoarece comanda nu se poate repara metadate corupției, comanda nu oferă orice nivel recomandat de reparare.

Informații suplimentare

Pentru mai multe informații despre regula consilier de centrul de sistem care detectează modificările efectuate la sistemul de cataloage, faceți clic pe următorul număr de articol pentru a vedea articolul în bază de cunoștințe Microsoft:
2688307 ID eveniment 17659 și event ID 3859 sunt înregistrate când actualizați tabelele de sistem într-o bază acoperire de date SQL Server
Următorul tabel listează erorile care indică inconsistențe în sistem de cataloage. De obicei, următoarele erori sunt generate împreună cu un cod de eroare "8992".
Reduceți tabelulMăriți tabelul
Eroaremesaj text
3851Un rând nevalid (% ls) a fost găsit în sistemul de masă sys.%ls%ls
3852Rând (% ls) în sys.%ls%ls nu are un rând potrivire (% ls) în sys.%ls%ls.
3853Atribut (% ls) de rând (% ls) în sys.%ls%ls nu are un rând potrivire (% ls) în sys.%ls%ls.
3854Atribut (% ls) de rând (% ls) în sys.%ls%ls are un rând potrivire (% ls) in sys.%ls%ls care nu este valid.
3855Atribut (% ls) există fără rând (% ls) în sys.%ls%ls.
3856Atribut (% ls) există, dar ar trebui să nu pentru rând (% ls) în sys.%ls%ls.
3857Atributul (% ls) este necesar, dar lipse?te pentru rând (% ls) în sys.%ls%ls.
3858Atributul (% ls) de rând (% ls) în sys.%ls%ls are o valoare nevalidă.
3859Avertisment: Catalogul de sistem au fost actualizate direct în baza acoperire de date de ID % d, cel mai recent la % S_DATE.
Următoarele sunt exemple de mesaje de eroare care poate primi atunci când vă confruntați cu aceste probleme:
Server: Msg 2513, nivel 16, stat 1, linia 1
Eroare de masă: ID obiectID obiect> (obiect "ID obiect> ") nu se potrivește între"SYSCOLUMNS"și"SYSOBJECTS".

MSG 3853, nivel 16, stat 1, linia 2
Atribut (object_id =ID obiect>) de rând (object_id =ID obiect>, index_id =Index ID>) în sys.indexes nu are un rând de potrivire (object_id =ID obiect>) în sys.objects.

MSG 3855, nivel 16, stat 1, linia 2
Atribut (data_space_id = 1) există un rând (object_id =ID obiect>, index_id =Index ID>) în sys.indexes.

MSG 3852, nivel 16, stat 1, linia 1
Rând (object_id =ID obiect>, index_id = 1) în sys.indexes (tip = U) nu are un rând de potrivire (clasa = 0, objid =ID obiect>, indexid =Index ID>, rowsetnum = 1) în sys.sysrowsetrefs.

MSG 3852, nivel 16, stat 1, linia 1
Rând (object_id =ID obiect>, index_id = 1) în sys.indexes (tip = U) nu are un rând de potrivire (clasa = 0, objid =ID obiect>, indexid =Index ID>, rowsetnum = 1) în sys.sysrowsetrefs.

MSG 3853, nivel 16, stat 1, linia 1
Atribut (default_object_id =ID obiect>) de rând (object_id =ID obiect>, column_id =Coloană ID>) în sys.columns nu are un rând de potrivire (object_id =ID obiect>) în sys.objects.

MSG 8992, nivel 16, stat 1, linia 1
Verificați Catalogul Msg 3853, stat 1: Atribut (object_id =ID obiect>) de rând (object_id =ID obiect>, column_id =Coloană ID>) în sys.columns nu are un rând de potrivire (object_id =ID obiect>) în sys.objects.

DBCC executarea finalizat. Dacă DBCC imprimat mesajele de eroare, contacta?i administrator de sistem.
În plus, este posibil să primiți un "Msg 211" mesaj de eroare care seamănă cu următoarele, dacă tu a verifica consistența unei baze acoperire de date prin rularea unui comenzii CHECKDB .
MSG 211, nivelul 23, stat 230, linia 1
Schemă posibil corupției. A alerga DBCC CHECKCATALOG.

MSG 0, nivelul de 20, stat 0, linia 0
Eroare gravă pe comanda curentă. Rezultatele, dacă este cazul, ar trebui să fie ignorate
Acest mesaj de eroare indică, de asemenea, că sistemul de cataloage conține metadate inconsistente.

NotăDacă verificați consistența unei baze acoperire de date care a fost actualizat la SQL Server 2000 prin executarea unei comenzi de CHECKDB , comanda poate returna o eroare "8992" cod și raportul incoerențe în sistemul de cataloage. Acest comportament se produce deoarece comanda DBCC CHECKDB în SQL Server 2000 nu include funcționalitatea de comanda DBCC CHECKCATALOG . Prin urmare, tu ar detectează aceste probleme în SQL Server 2000 excepția cazului în care ați executat comanda DBCC CHECKCATALOG .

Pentru mai multe informații despre cum să utilizați comanda DBCC CHECKDB , du-te la următorul site Web Microsoft:
Informații generale despre comanda DBCC CHECKDB

Referințe

Pentru informații suplimentare despre problemele care pot apărea atunci când un tabel SQL Server sistem manual este actualizat, faceți clic pe următorul număr de articol pentru a vedea articolul în bază de cunoștințe Microsoft:

2688307 ID eveniment 17659 și event ID 3859 sunt înregistrate când actualizați tabelele de sistem într-o bază acoperire de date SQL Server


Proprietă?i

ID articol: 2787112 - Ultima examinare: 4 februarie 2013 - Revizie: 3.0
Se aplică la:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Standard
Cuvinte cheie: 
kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2787112 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 2787112

Trimite?i feedback

 

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