SQL NAV DB defekt – Multiple IAM Pages for Object bei CheckDB

Veröffentlicht von

Um eine inkonsistente Datenbank wieder herzustellen, muss die komplette defekte Tabelle dupliziert und geleert werden. Danach kann die SQL DB mit CheckDB Repair_Rebuild korrigiert werden. Anschliessend wird die kopierte Tabelle wieder zurückkopiert und die Temp Tabelle gelöscht. Eine direkte Korrektur mit bordeigenen Mitteln von SQL ist nicht möglich. Selbst CheckDB Repair mit der Option REPAIR_ALLOW_DATA_LOSS kann die Fehler nicht korrigieren.

NAV DB Fehler SQL Multiple IAM Pages for Object..

Bitte hierzu den folgenden Ablauf mit der gewünschten Datenbank Step by Step ausführen

USE [NAVPROD]
GO
/* 1. Exclusiven Datenbankzugriff setzen */
ALTER DATABASE [NAVPROD] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

/* 2. Defekte Tabelle duplizieren */
SELECT * INTO [NAVPROD].[dbo].[Record Link Copy] FROM [NAVPROD].[dbo].[Record Link]
GO

/* 3. Defekte Tabelle leeren */
TRUNCATE TABLE [NAVPROD].[dbo].[Record Link]
GO
DROP TABLE [NAVPROD].[dbo].[Record Link]
GO


/*-- 4.a DB Repair Option ohne Datenverlust -*/
DBCC CheckDB (N'NAVPROD', REPAIR);
DBCC CheckDB (N'NAVPROD', REPAIR_REBUILD);
GO

/*-- 4.b DB Repair Option mit Datenverlust -*/

DBCC CHECKDB(N'NAVPROD', REPAIR_ALLOW_DATA_LOSS)  
GO
SELECT * INTO [NAVPROD].[dbo].[Record Link] FROM [NAVPROD].[dbo].[Record Link Copy]
GO

/* 5. Defekte Tabelle zurückkopieren */
SELECT * INTO [NAVPROD].[dbo].[Record Link] FROM [NAVPROD].[dbo].[Record Link Copy]
GO

/* 6. Tabellenkopie löschen */
DROP TABLE [NAVPROD].[dbo].[Record Link Copy]
GO

/* 7. Datenbankzugriff wieder erlauben */
ALTER DATABASE [NAVPROD] SET MULTI_USER
GO