sql >> Database >  >> Database Tools >> SSMS

SQL Server:Hoe een losgemaakte/beschadigde database te bevestigen/repareren?

U kunt een tijdelijke oplossing proberen. In het kort:

  1. Maak een dummy DB met dezelfde naam (mogelijk moet u eerst de echte DB verwijderen, de originele bestanden opslaan of daarna de naam wijzigen).
  2. Haal de dummy offline (loskoppelen en (offline zetten of de SQL-service stoppen)).
  3. Verwijder dummy-bestanden, vervang ze dan door de echte DB-bestanden.
  4. Probeer de DB opnieuw te koppelen

Bewerken

Zoals bij de opmerking van OP, kan het ook nodig zijn om het logboek opnieuw op te bouwen (als u transacties bent kwijtgeraakt)

  1. WIJZIG DATABASE [MijnDatabase] REBUILD AANMELDEN (NAME=’MyDatabaseLog’,FILENAME=’D:\Microsoft SQL Server\YourDataPath\Data\Logfile.ldf’)

    en plaats de DB in het logboek voor meerdere gebruikers (als u de DB uitschakelt, moet u deze in de modus voor eenmalig gebruik zetten)

  2. ALTER DATABASE [nomdb] SET MULTI_USER

Voor alle details kun je de Paul Randal-artikel

(Let op:in dit artikel gebruikt de auteur de NOODMODUS om het transactielogboek te (proberen) te repareren)

Ik heb het al met succes gebruikt, maar afhankelijk van de omvang van de schade of andere details kan het een onmogelijke taak zijn. Overweeg een back-up te herstellen.

Merk op dat deze stunts prima zijn in een ontwikkelingsserver, maar je moet echt plannen (en oefenen) voor noodherstel in een productieserver.




  1. Zou het verwijderen van 'OPTIMIZE_FOR_SEQUENTIAL_KEY' het falen van mijn script.sql oplossen of is er meer bij betrokken (SQL Server Express DB -> SQL Server)?

  2. Voeg lijstitem toe elke keer dat ik op verzenden klik

  3. Hoe kan ik een sneltoets programmeren om de top 1000* uit de geselecteerde tabel te selecteren?

  4. phpmysql-fout - #1273 - #1273 - Onbekende sortering:'utf8mb4_general_ci'