Benutzer mit den meisten Antworten
MS SQL 2000 move file on hard drive

Frage
-
Hallo zusammen!
Habe schon eine neue Frage:
Ich will eine Datei, die auf der Festplatte liegt, von einem MS SQL 2000 Server aus verschieben. Hier ein Versuch:
CREATE PROCEDURE SAPCommon_MoveXML AS Begin alter database tempdb modify file (name='tempdev',filename= 'c:\order1\test.xml') alter database tempdb modify file (name='templog',filename= 'c:\ordner2\test.xml') End GO
Das ist die Meldung dazu:
File 'tempdev' modified in sysaltfiles. Delete old file after restarting SQL Server.
File 'templog' modified in sysaltfiles. Delete old file after restarting SQL Server.Die Daten bleiben da, wo die waren. Server kann ich nicht neu starten. Was stimmt da nicht?
Was ich erreichen wollte, war, dass die eine Datei von Ordner1 nach Ordner2 verschoben wird.
Vielen Dank!
Antworten
-
Aua!!!
Und wenn ich dann noch SAP im SP Namen lese ... so eine Aktion kann mächtig Ärger geben. Hättest Du sowas auf meinem System gemacht, hättest Du jetzt mindestens 2 Ohren weniger ;-)
Für die Zukunft (damit Du eine hast):
- Erst die Auswirkung von Befehlen nachlesen, die BOL zum SQL Server ist wirklich sehr gut & umfangreich.
- Dann nachdenken: Ist das wirklich was ich will?
- Auf einem Testsystem austesten. Installier Dir zur Not lokal eine Express Edition, die Du zerschiessen kannst, wie Du willst.
- Und erst dann ganz zum Schluß auf dem Produktiv-System ausführen, am besten in einem Wartungsfenster, wo man sich auch Downzeiten erlauben könnte.Mit dem Befehl änderst Du die Datenbank (hier die TempDB); das hat nun wirklich nichts damit zu tun, irgendwelche andere Dateien im Filesystem herum zu schieben.
Du könntest Dateien mit der xp_cmdshell und einem entsprechenden DOS Befehl verwenden; Voraussetzung ist aber, das der Account des SQL Server Dienstes die entsprechenden Rechte dazu hat.
EXEC master..xp_cmdshell 'move /Y C:\test.txt C:\temp\'
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort vorgeschlagen Christa Kurschat Freitag, 2. Juli 2010 08:29
- Als Antwort markiert w_ing Freitag, 2. Juli 2010 12:04
Alle Antworten
-
Hallo,
siehe z.B.:
Moving the tempdb database
Moving the Tempdb and Master Database in SQL ServerDamit die Änderungen von ALTER DATABASE an der TempDB wirksam wird, muss der SQL Server Dienst einmal neu gestartet werden.
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de -
Hallo,
Hast Du Dich genau an die Anweisungen aus der BOL gehalten? Das müßte eigentlich funktionieren.
Was Du IMHO falsch gemacht hast ist der Filename, der müßte schon auf .mdf und .ldf lauten. Vermutlich ann der Server deshalb nicht starten. Die Tempdb bleibt im alter Verzeichnis stehen, sie würde im neuen Verzeichnis neu erstellt werden. Später mußt Du sie dort löschen.
Hoffentlich hast Du die Master gesichert, Du müßtest jetrzt einen rebuild daraus machen.
Gruß
Christa -
Aua!!!
Und wenn ich dann noch SAP im SP Namen lese ... so eine Aktion kann mächtig Ärger geben. Hättest Du sowas auf meinem System gemacht, hättest Du jetzt mindestens 2 Ohren weniger ;-)
Für die Zukunft (damit Du eine hast):
- Erst die Auswirkung von Befehlen nachlesen, die BOL zum SQL Server ist wirklich sehr gut & umfangreich.
- Dann nachdenken: Ist das wirklich was ich will?
- Auf einem Testsystem austesten. Installier Dir zur Not lokal eine Express Edition, die Du zerschiessen kannst, wie Du willst.
- Und erst dann ganz zum Schluß auf dem Produktiv-System ausführen, am besten in einem Wartungsfenster, wo man sich auch Downzeiten erlauben könnte.Mit dem Befehl änderst Du die Datenbank (hier die TempDB); das hat nun wirklich nichts damit zu tun, irgendwelche andere Dateien im Filesystem herum zu schieben.
Du könntest Dateien mit der xp_cmdshell und einem entsprechenden DOS Befehl verwenden; Voraussetzung ist aber, das der Account des SQL Server Dienstes die entsprechenden Rechte dazu hat.
EXEC master..xp_cmdshell 'move /Y C:\test.txt C:\temp\'
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort vorgeschlagen Christa Kurschat Freitag, 2. Juli 2010 08:29
- Als Antwort markiert w_ing Freitag, 2. Juli 2010 12:04
-
Hallo,
ich sehe diesen Beitrag erst jetzt und vermute, dass es mit
!!!Lasse bitte die Finger von solchen Aktionen!!!
Deinen XML Versuchen im anderen Beitrag zusammenhängt.Bevor Du solche Befehle ausführst solltest Du sie in der SQL Server Online Dokumentation
nachschlagen, letzter Stand: SQL Server 2000 -Onlinedokumentation - Aktualisierung von Juni 2007Dort schlage nach: Wiederherstellen der master-Datenbank von einer aktuellen Sicherung
so Du denn eine aktuelle Sicherung hast - die bei solchen Aktionen Pflicht ist (oder gewesen wäre).
Sollte dem nicht so sein geht es weiter mit: Neuerstellen der master-Datenbank (Rebuild Master-Dienstprogramm)
Beachte, dass Du dazu die Dateien vom Installationsmedium auf die lokale Festplatte kopieren mußt:
http://support.microsoft.com/kb/273572/Anschliessend darfst Du dann alle Benutzerkonten neu einrichten, die Datenbanken neu einbinden.
Für die Zukunft:
Alle Befehle die der SQL Server bezüglich Dateien kennt, beziehen sich ausschließlich auf
Datenbankdateien. Damit kann man keine anderen Dateien (sei es XML oder andere)
umbenennen usw.
Und jeglichen Tipps und Tricks die Abkürzungen vorschlagen, solltest Du ein
gesundes Mißtrauen entgegenbringen und nur anwenden wenn Du sie verstanden hast.Deine Versuche bezüglich XML solltest auf einem Testsystem durchführen
(ich hatte im anderen Thread bereits auf die Express Edition hingewiesen).Gruß Elmar
-
Oh...
Folgendes habe ich gemacht:
auf meinem Server auf den ich per Enterprise Manager zugreife, habe ich den Ordner "Databases". Darunter die einzelnen databases selbst. Eine davon, in der ich arbeite, heisst "TEST". Die ist nur zum testen. Dadrin habe ich diesen Befehl ausgeführt. Die XML Dateien sind nur Testdateien.
Wenn ich diesen Befehl ausgeführt habe, was habe ich also damit angestellt?
-
Du hast Dir damit die SQL Server Installation zerschossen.
Der Server versucht jetzt, eien tempdb hochzufahren, die die falschen Endungen aufweist. das geht nicht. Und di eoriginale Tempdb findet er nicht mehr, weil Du den Pfad mit den Befehlen geändert hast. Da dieser in der Master steht, geh bitte den von Elmar vorgeschlagenen Weg, um die Installation zu reparieren.
-
Auf welcher Datenbank Du den Befehl ausgeführt hast, ist hier egal. Mit dem Befehl hast Du den Speicherort & Dateinamen der TempDB geändert; das sie dabei .XML heissen sollen, ist egal, Namen und Extension sind irrelevant. Das wird zwar erst nach dem Neustart des Dienstes (also auch bei Rechnerneustart) wirksam, aber irgendwann wird jeder Rechner / Dienst mal neugestartet, z.B. nach Installation eines Services Packs.
Die TempDB ist sehr wichtig und hat auch großen Einfluss auf die Performance des Systems, weshalb man sie bevorzugt auf schnellen Platten(systemen) ablegt; die Systempartition verwendet man eher selten (bis nie).
Du solltest also am besten die TempDB so konfigurieren, das sie wieder am ursprünglichem Ort liegen soll, sonst könnte es nach Neustart böse Überraschungen geben.
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de -
Man sollte Leute wie mich nicht in die Nähe solcher Systeme lassen. Bin anscheinend wirklich auf ein Fake reingefallen. Da war genau die Funktionalität beschrieben, die ich brauche.
Ein erfahrener Kollege scheint jetzt alles in Ordnung gebracht zu haben.
Vielen Dank für die tolle Unterstützung hier!