Freitag, 20. April 2012

MSDB beim MSSQL reparieren

als gerade ein Kollege anrief das die DTS Pakete unserers SQL Server 2000 Clusters Probleme machen mußte ich feststellen das MCDBA Kenntnisse mangels Nutzung weg sind. Es stellte sich heraus das die MSDB Datenbank korrupt war was dazu führte das Jobs abstürzten. Wir hatten zwar die Datenbank immer brav gesichert aber auch die Sicherung war korrupt gesichert worden. Unschönerweise hatte sich der SQL Server nicht per Mail melden können weil vergessen wurde bei einer Exchangemigration das MAPI Profil des SQL Agents zu aktualisieren. Also galt wieder das Motto: "Du hast keine Chance! Nutze Sie!"
In einem MSDN Forum bin ich dann auf die richtige Lösung gestoßen. Wir melden uns mit der osql Konsole am Server an.


Use msdb


Go

sp_dboption ‘msdb’, ’single_user’, ‘true’

GO

DBCC CHECKDB(‘msdb’, REPAIR_REBUILD)

go

sp_dboption ‘msdb’, ’single_user’, ‘false’
natürlich war unsere Datenbank so kaputt das nur noch der Parameter REPAIR_ALLOW_DATA_LOSS
half. Falls der Server rummeckert das man die DB nicht in den Einzelbenutzermodus setzen kann müssen andere User und Dienste die die MSDB nutzen hart über Verwaltung/Aktuelle Aktivität getrennt werden.




einen Desktoplink auf einem 2008 R2 Terminalserver ins AllUser Profil kopieren

der Auftrag hörte sich einfach an:"kopier mal einen Link ins AllUser Profil des Terminalservers"
Nur leider hatte ich keine Rechte auf den Ordner C:\Benutzer\All Users\Desktop obwohl ich meinen Explorer explizit als Administrator aufgerufen hatte. Nach einigen rumgegoogel fand ich ein Newsgroup Posting von Nils Kaczenski mit der Lösung. Um sich den Pfad des AllUserProfils anzeigen zu lassen muß man nur

set all

aufrufen. Dann konnte ich einfach in einer Kommandoshell die ich explizit als Administrator aufgerufen habe                                                                   

copy *Link* %AllUsersProfile%\Desktop

machen und schon war der Link da wo er hingehört.