[MSSQL] Kan database niet attachen

Pagina: 1
Acties:
  • 160 views sinds 30-01-2008
  • Reageer

  • Palthe
  • Registratie: Juni 2002
  • Laatst online: 12-04 15:26
Bij attachen database via zowel Enterprise Manager als Query analyser (of met script via MSDE)
krijg ik een foutmelding die ik niet kan herleiden/oplossen:

Server: Msg 3624, Level 20, State 1, Line 1

Location: filemgr.cpp:1905
Expression: fcb->GetSize () < fileSize
SPID: 53
Process ID: 728

Connection Broken

Ook met een single file attach gaat het fout (zelfde melding), dus het zit ook niet in de log.
Heb heel google al doorlopen evenals msdn maar nauwelijks melding hierover en al helemaal geen oplossing. Ligt het aan een beschadigde mdf?? Gaat wel om gecrashte server...

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 12-04 18:52

Gé Brander

MS SQL Server

Geef je de paden wel juist aan tijdens het attachen?

Als de mdf file beschadigd is, dan zou ik een nieuwe database restoren vanuit een dump. Is dat geen optie?

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • sneep
  • Registratie: Juli 2005
  • Laatst online: 01-04 13:43
Ik kan je niet helpen met de foutmelding; misschien wel met een workaround: sinds ik problemen kreeg met attachen, migreer ik databases alleen nog maar met backup/restore (ook de paden goed aangeven!). In jouw geval heb je misschien geen backup mogelijkheid meer, maar wellicht dat de tape hier uitkomst biedt...

sneep


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 14-04 21:25

Delphi32

Heading for the gates of Eden

Dat lijkt dan inderdaad op een corrupte mdf. De error rapporteert dat de bestandsgrootte afwijkt van de verwachte bestandsgrootte (als ik het goed lees). Ik hoop dat je een beetje recente backup hebt, ik vermoed dat er weinig aan te doen is.

  • Palthe
  • Registratie: Juni 2002
  • Laatst online: 12-04 15:26
Paden staan goed. Ik ga nu kijken of ik het via een omweg kan doen. Ik heb nu de database suspect staan, door een nieuwe aan te maken met dezelfde naam, SQL Server te stoppen, beschadigde (?) mdf in de map geplaatst waar de nieuwe staat, en SQL Server weer herstarten.

Kijken of ik er nog iets mee kan.

  • Palthe
  • Registratie: Juni 2002
  • Laatst online: 12-04 15:26
Ok update van de situatie:

sp_resetstatus heeft geen effect op de suspect status. Hij wordt even gereset, maar ik kan er vervolgens niks mee. Bij het heropstarten van de SQL Server staat database meteen weer op suspect.

vervolgens volgende statement gedaan:

UPDATE master..sysdatabases SET status=-32768 WHERE name='003'

Dit zet de database in emergency mode.

Ik kan bij de tabellen (halleluja), en meteen een checkdb gedaan. Systeemtabellen beschadigd....
Vervolgens dbcc checktable ('Syscolumns') gedaan en ja hoor torn pages.
Dus op hoop van zegen maar een

dbcc checktable ('Syscolumns', [REPAIR_ALLOW_DATA_LOSS])

gedaan, nadat ik heel duidelijk had ingevoerd:

sp_dboption '003', 'single user', 'true'

Maar alsnog de melding:

Server: Msg 7919, Level 16, State 3, Line 1
Repair statement not processed. Database needs to be in single user mode.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Dus hier zit ik nu vast. Suggesties?

[edit]

Ook bij het kopiëren van de database naar een nieuwe database geeft een I/O Error, dus het lijkt een gedane zaak.

[ Voor 10% gewijzigd door Palthe op 26-01-2006 10:11 ]


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 12-04 18:52

Gé Brander

MS SQL Server

SQL Server opstarten in Single user mode ( -m switch als ik het goed herinner) en dan de dbcc draaien. Misschien dat dat helpt.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Palthe
  • Registratie: Juni 2002
  • Laatst online: 12-04 15:26
Ok top!
dat is gelukt. Database gerepareerd. Is nu consistent. Maar goed ik krijg hem maar niet van de status 'Suspect' af. Opnieuw attachen geeft nog steeds dezelfde foutmelding.

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 12-04 18:52

Gé Brander

MS SQL Server

Backup maken. Database verwijderen (drop) en vervolgens de database restoren. Wil dat misschien helpen?

Anders een database check uitvoeren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DECLARE     @dbs_nam    AS VARCHAR(50)
DECLARE     @opd        AS VARCHAR(1024)

DECLARE     dbc_dbs_cur     CURSOR FOR 
        SELECT [name] 
        FROM [master].[dbo].[sysdatabases] 
        WHERE [dbid] <>2

OPEN        dbc_dbs_cur

FETCH       NEXT FROM   dbc_dbs_cur
INTO        @dbs_nam

WHILE       @@FETCH_STATUS = 0
    BEGIN
        SET     @opd = 'dbcc checkdb ('+ @dbs_nam + ')'
        PRINT   'Database: ' + @dbs_nam
        EXEC    (@opd)
    FETCH   NEXT 
    FROM    dbc_dbs_cur
    INTO    @dbs_nam
END

CLOSE dbc_dbs_cur

DEALLOCATE dbc_dbs_cur

Dit gebruik ik hiervoor.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Expliciet van suspect halen werkt niet?
SQL:
1
UPDATE master..sysdatabases SET status = status ^ 256 WHERE name = '003'

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 12-04 18:52

Gé Brander

MS SQL Server

kenneth schreef op donderdag 26 januari 2006 @ 13:22:
Expliciet van suspect halen werkt niet?
SQL:
1
UPDATE master..sysdatabases SET status = status ^ 256 WHERE name = '003'
Oh, doe dat niet te snel! Niet zonder bijzonder goede reden de systeem tabellen gaan zitten updaten!

[ Voor 3% gewijzigd door Gé Brander op 26-01-2006 13:43 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Wat is dan wel een goeie reden? :P
Ik doe het ook niet om de haverklap, maar de TS heeft het ook al gedaan (in emergencymode zetten), en als niets anders lijkt te helpen ...

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 12-04 18:52

Gé Brander

MS SQL Server

Je kan beter eerst alle mogelijkheden uitgenut hebben om het probleem op te lossen, in plaats van maar systeemtabellen te gaan zitten wijzigen. Dan houdt je jezelf alleen maar voor de gek.
Heeft de TS geen dump van de master database of de database die de problemen geeft? Een dump die nog goed is dus...

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!

Pagina: 1