virtuelleruser
Goto Top

MS SQL 2005 Systemdatenbanken wiederherstellen

Hallo Zusammen,
ich habe ein Problem das ich nun schon seit Wochen verfolge aber noch keine wirkliche Lösung finde. Folgendes Scenario: Ein MS SQL 2005 Server soll über ein komplettes Backup auf einen anderen Server mit neuem Namen umziehen. Das einspielen der entsprechenden Systemdatenbanken "master, model, msdb" funktioniert problemlos. Danach sind auch alle User da und alle Tasks wie Sicherungen usw. (eine ganze menge) Bei SQL 2000 musste danach in der Datenbank "msdb" in der Tabell "sysjobs" in der Spalte "originatin_server" der Server Name für jeden Job noch angepasst werden, danach liefen alle Jobs prächtig und ohne Fehler. In SQL 2005 gibt es dieses Feld nicht mehr (zumindest nicht in der Form). Die Jobs bekommen den Namen von Irgendwo her aber anscheinend nicht aus der "msdb" somit kann ich die Jobs weder richtig ändern oder löschen. Auserdem werden die Job Aktionen am Quellserver durchgeführt und nicht am lokalen SQL. Das einzige was ich gefunden habe ist in den Aufträgen selbst wenn man den entsprechenden Aktionsschritt öffnet und im Register "Datenquell" und "Befehlszeile" nachsieht. Dort steht der Servername. Ist das die einzige Möglichkeit die Jobs zu ändern oder habe ich da was übersehen?

Falls mir da jemand einen Rat hat sage ich schon mal im voraus Danke

Content-ID: 113183

Url: https://administrator.de/contentid/113183

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

InShaDan
InShaDan 03.04.2009 um 15:09:52 Uhr
Goto Top
Hallo,

gib doch mal ein paar Informationen zu Deinem Server damit man sich ein klares Bild machen kann. Den Weg den Du hier einschlägst, ist m.E. ungewöhnlich bzw. sogar nicht möglich.

Interessant wäre zu wissen um welche Version es sich handelt, welchen Modus Du verwendest (Windows oder Mixed) usw. Kannst auch gerne als PM senden.
virtuelleruser
virtuelleruser 03.04.2009 um 15:20:47 Uhr
Goto Top
Wenn die "msdb" nicht gebraucht wird (wenn nur Backup DB und Transaktionslog drinn sind) ist dass die einfachste Möglichkeit den Server paralell unter einem neuen Namen aufzusetzen. Wenn die Datei Struktur die Gleiche ist dann kann mann die Userdatenbanken vorher trennen und rüberkopieren dann muss mann nach dem einspielen der Master DB nicht mal die user DBs wiederherstellen. Auch gibt es keine Verwaisten User die per sp wieder der DB zugewiesen werden müssen.
Die einfachen Jobs erstelle ich neu und habe somt in kürzester Zeit einen Identischen Server unter anderem Namen für Tests oder Fehler analysen usw.

Nur die "msdb" bereitet mir schwierigkeiten. Wie gesagt unter SQL 2000 wahr das einfach.


Anbei meine SQL Daten:
Windows SQL 2005 Standart/Enterprise SP3
Authentifizierung Mixed Mode
lokale SQL User Berechtigungen auf DB
AD Gruppen Berechtigungen auf DB
InShaDan
InShaDan 03.04.2009 um 15:36:47 Uhr
Goto Top
Ich verstehe immernoch nicht, warum Du die msdb mit nimmst. Handelt es sich bei dem Zielserver um ein dedizierten Server (2k3 mit sql 2005 SP3) oder ein SBS, EBS etc. So wie ich das bis jetzt lese, würde ich (persönlich) alles neu aufsetzen, entsprechende Service Packs, Hotfixes etc. einspielen und dann erstmal ganz genau schauen was rüber muss. Aucht auch darauf dass die entsprechende Collation übereinstimmt.

Wichtig ist auch, dass ein solcher Move nicht zu normalen "Business Hours" durchgeführt wird, sofern es sich hierbei um "Business Critical Data" handelt.

Im ersten Schritt wären das die Datenbanken (nicht Systemdatenbanken) die per Backup rüberkommen.
Im zweiten Schritt kümmerst Du dich um die User und die Jobs. Diese sind relativ einfach raus zu scripten.
Falls auf deiner Kiste dann noch Reporting Services und Analysis Services laufen können die Schritt für Schritt umgezogen werden.
Achte in jedemfall darauf, dass die Applikationen ebenfalls auf den richtigen Server zeigen, und lasse es am besten von einem dritten testen.

Bei Fragen einfach melden...

Gruß
MadMax
MadMax 08.04.2009 um 12:33:09 Uhr
Goto Top
Hallo virtuelleruser,

wenn Du das Problem schon ne Weile mitschleppst, dann ist es ja hoffentlich nicht schlimm, daß die Antwort so spät kommt.

In sysjobs gibt es zwar nicht mehr den "originating_server", dafür aber die "originating_server_id". Diese ID verweist auf einen Server in sys.servers.
ID 0 ist normalerweise der lokale Server, wenn Du Verbindungsserver anlegst, dann landen die auch da drin. Dann brauchst Du also nur noch die "originating_server_id" anpassen.

Den Weg habe ich nicht getestet, der würde aber dem von Dir geschilderten entsprechen.

Gruß, Mad Max
virtuelleruser
virtuelleruser 09.04.2009 um 12:37:39 Uhr
Goto Top
Danke erst mal für die Antwort. Dass mit der ID werde ich ausprobieren wenn ich wieder im Geschäft bin. Nochmal zu der Thematik mitnehmen der "msdb". Dies kommt in erster Linie aus dem Desaster Recovery. Dort wird der gesammte Server unter seinem alten Namen wiederhergestellt. Wenn ich nun in meinem Scenario den Server für einen Test benötige (wie es in diesem Fall ist) der, bis auf den Name, absolut Identisch ist (In der msdb sind 35 verschieden Jobs angelegt die zum Teil Daten sammeln zum Teil Daten und Tabellen automatisch auswerten) dann ist es doch in meinen Augen die einfachste Vorgehensweise es so zu machen. Vor allem wenn mann sich wie in meinem Fall nicht gern mit scripten herumschlagen will. In diesem Sinne wünsche ich allen ein frohes Osterfest.

Gruß
virtuelleruser