SQL-Datenbanken, VBA Office Automation & COM Addins, VB SchnittstellenprogrammierungSQL-Server

 

Home
Nach oben
Access
ActiveX
DAO, DDL..
Digitale Zertifikate
PDF-Indexierung
SQL
SQL-Server
Word
MonthView Control
Oracle

Nach oben


Fremde DB / MDF-Datei anhängen

Problem: beim Versuch, eine mdf-Datei ohne Logdatei als Datenbank anzuhängen, tritt unter bestimmten Umständen folgender Fehler auf:

Der Fehler kann auch durch das Anlegen einer Dummylog-Datei im angegebenen Verzeichnis nicht umgangen werden.

Das Anlegen einer Dummy-DB und Austausch der mdf-Dateien (bei beendetem SQL-Server ...) versetzt die Datenbank in den Zustand "Fehlerverdächtig", in dem kein Zugriff auf die DB-Objekte möglich ist.

 

Nichtsdestotrotz ist aber ein Anfügen ohne Logdatei möglich.

Vorgehensweise:

bullet

Dummy-DB mit gleichem Namen wie anzufügende DB (Standardpfade sind ok) 

bullet

Server-Einstellung "Systemkataloge" ändern: 

  

bullet

Query Analyser: update sysdatabases set status = -32768 where name = 'dbname' 
(In der Online-Dokumentation ist fälschlicherweise der Wert 32768 angegeben)

bullet

SQL-Server beenden 

bullet

Dummy und Original Mdf-Datei austauschen 

bullet

SQL-Server neu starten 

bullet

Die Datenbank ist nun im Zustand "Schreibgeschützt\Offline\Notfallmodus", in dem ein Zugriff auf die DB-Objekte wie Tabellen oder Views möglich ist, so daß diese in eine andere DB kopiert werden können

 
 

    Alternativ kann die DB aber auch direkt in den normalen Zustand versetzt werden:

bullet

Query Analyser: update sysdatabases set status = 0 where name = 'dbname' 

bullet

Nach dem Zurücksetzen des Status auf den Wert 0 ist möglich, den fehenden Logfile mittels dbcc zu ergänzen

bullet

Query Analyser: dbcc rebuild_log('dbname', 'E:\MSSQL\log\dbname.ldf')' 

bullet

Nach Anlage der Logdatei steht die Datenbank wie gewünscht zur Verfügung, ist aber per Default zunächst nur DBOs verfügbar:

bullet

Zum Ende der Arbeit sollte die Option "Systemkataloge" zurückgesetzt werden.