Jump to content

mst@cimt

Abgemeldet
  • Gesamte Inhalte

    9
  • Registriert seit

  • Letzter Besuch

Reputation in der Community

0 Neutral
  1. Na, die Datendateien haben doch auch den Namen der Datenbank drin, die müßten man doch vorher umbenennen, damit es wieder konsistent ist.
  2. Kann man eigentlich diese Datendateien, welche für die Datenbank verwendet werden, auf eine neue Instanz kopieren, und diese dann einfach umbennenen, bzw. dann auch die Datenbank umbenennen?
  3. Wunderbar, danke sehr. Das ist doch mal eine Info, mit der ich was anfangen kann (im Gegensatz zu den Büchern und im Netz). Frage, hast Du mal eine DB per SQL-Server-Import/Export.Assistenen und den direkten Austausch mit dem SQL Server Native Client 10.0 auf 2 verteilten Datenbanken gemacht? Und mal in ein Flatfile exportiert? Warum kann ich hier nur eine Tabelle, und nicht mehrere angeben?
  4. In Oracle steckt in einem Backup die gesamte systeminternen Dinge wie SYSTEM, SYSAUX, UNDO, TEMP, REDO. Und darin stecken eben Dinge wie die SCN (System Change Number), Statisitken usw. MS SQL Server wird das ja bestimmt ähnlich machen.
  5. Das ist schon klar. Jedoch kopiere ich doch alle internen Zustände der Ursprungsdaten mit? Genau das will ich doch gar nicht.
  6. Wieder mal bin ich als Oracler auf die Hilfe von kompetenten MS SQL Server-Anwendern und Admins angewiesen, weil ich hier vermutlich nicht richtig verstehe und nicht so hinbekomme. wie ich mir das vorstelle. Frage: Wie exportiere und importiere ich richtig eine Datenbank in MS SQL Server (in meinem Fall 2008R2), um nur den Datenbestand von einem System auf den anderen zu kopieren? Hintergrund: Wir DB-Admins müssen ja sehr oft Datenbanken klonen und kopieren, um beispielsweise mehrer Test- und Produktiv-Datenbanken zu befüllen. Es gibt zwar oftmals ein DB-Cloning der DB-Hersteller, oder man kann per Backup-/Recovery. Das ist aber aus diversen Gründen nicht zu empfehlen, weil hier alle internen Vorgänger Datenbank, System-IDs, Zähler, Statistiken usw. mit übertragen werden. Genau deshalb verwende ich bei Oracle-DBs schon seit Jahren Datapump bzw. bis Oracle 9i imp/exp, und bei MySQL mysqldump. Man exportiert sauber den Datenbestand raus, kopiert diesen in eine neu installierte Datenbank. Ich habe nun festgestellt, daß ein Kunde, den wir in diesem Bereich ebenfalls betreuen, Datenbanken per Backup-/Recovery kopiert, was hier sehr schnell funktioniert. Also kam ich auf die glorreiche Idee, daß es im SQL Server-Umfeld doch genau so einfach gehen müßte, Daten zu kopieren. MIt Datenbank meine ich übrigens nur die Datenbanken innerhalb einer MS-SQL-Instanz, was in MySql und Oracle als Schema bezeichnet wird. Meine Versuche: Der Weg über den SQL-Server-Import/Export.Assistenen und den direkten Austausch mit dem SQL Server Native Client 10.0 funktioniert nicht, da die Kommunikation zwischen den Maschinen nicht funktioniert. Hier habe ich natürlich den SQL-Server-Browser in den Einstellungen auf Netzwerk umgestellt, was jedoch zu keinem Erfolg führte. Auch das Export über ein Flatfile funktioniert nicht, da man hier nur einzelne Tabellen (warum?) auswählen kann. Das exportieren in eine Excel-Datei ist ebenfalls gescheitert, da hier viele Datenfehler in der Datenbank gemeldet werden. Das Programm bcp kann anscheinend auch nur einzeilen Tabllene exportieren, aber nicht die gesamte Datenbank. Bleibt nur noch das direkte Exportieren in SQL-Statements. Hier werden jedoch die Instanz- und Datenbanknamen direkt in die Statements reingeschrieben. Weiterhin werden auch feste Pfade mit Dateiennamen erzeugt! Das heißt, die Scripte würden bei Ausführung direkt die gleiche Instanz erzeugen, was auch nicht Sinn der Sache ist. Da die Dateien über 3,6 GB groß werden, ist eine nachträgliche Bearbeitung so einfach nicht möglich. Verwendet man ein Tool (sed.exe), darf die Datei nicht, wie Default, als Unicode angelegt sein, sondern muß im ANSI-Format erzeugt werden. Dann hat man zwar immer noch eine ca. 1.8 GB große Datei, diese läßt sich dann aber mit dem genannten Tool in der Weise bearbeiten, so daß die Dateipfade, -namen, Instanz und Datenbankname modifiziert werden können. Das Import der Struktur geht recht fix, aber der Import der Daten dauert aber sehr lange, da alle Statements per Insert per 100 Anweisungen pro Sekunde geschrieben werden. Ein Kopieren der Datenbank über das Backup geht wesentlich schneller, hier sind mehrere Gigabyte in Minuten erledigt. Ich habe mehrere MS-SQL-Bücher (All-In-One Desk Reference For Dummies, Wiley - Microsoft - SQL - Server 2008 Bible, Sams Microsoft SQL Server 2008 R2 Unleashed) studiert bzw. im Netz (MS-SQL-Online) und auf Youtube nachgeschaut. Die meisten Testfälle beschränken sich auf das Clonen/Kopieren auf einer Datenbank auf einer Maschine. Insgesamt sind alle Beschreibungen, die ich gefunden habe, für mich sehr unbefrieidigend. Frage: Wie exportiere ich nun die Datenbank so in ein Flatfile, so daß ich sie variabel und flexibel schnell (!) in jede weitere Datenbank importieren kann? Wie gesagt, mein Vorbild ist Oracle Datapump bzw. mysqldump. Mit dem Export in ein SQL-Script habe ich zwar eine Lösung, die aber wegen der Nachbearbeitung vor dem Import unbefriedigend ist. Zudem dauert der Datenimport sehr sehr lange. Oder kann ich irgendwie ein Backup der MS SQL Datenbank in der Weise vornehmen, so daß sie wie eine neu installierte Datenbank in einem neuen System wirkt?
  7. Ah, super, vielen Dank, da ist doch das, was ich suchte. Gut, aber da Du sagst, es wird nicht gleichzeitig alles geschrieben, ist das für mich so eh wertlos. Danke für die Info.
  8. Danke für die Antworten. Ich will an sich nur das Transaktionslog spiegeln, und dafür einfach eines mit dazuhängen. Habe ich das also richtig verstanden, ich kann (hinterher) nicht einfach nochmal ein Transaktionslog dazuhängen, sondern müßte dann wirklich bei der Erzeugung der Datenbank mit "Create Database" 2 Dateien mit LOG ON mitgeben? Beispiel: USE master ;GOCREATE DATABASE SalesON ( NAME = Sales_dat, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = Sales_log1, FILENAME = 'D:\Logs\salelog2.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ; NAME = Sales_log2, FILENAME = 'E:\Logs\salelog2.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ;GO Ich hoffte, daß es hier so was ähnliches wie bei Oracle gibt, wo man Logpfade hinzufügen könnte a la ALTER DATABASE ADD LOG ON oder so was ähnliches. Aber die Syntaxbeschreibung gibt leider nichts weiter her.
  9. Ich bräuchte mal bitte die Hilfe von einem MS SQL Server (2008) Spezialisten, da ich hier gar nichts vernünftiges im Netz finde, und ich eigentlich ein Oracler bin. In Oracle-Datenbanken gibt es Redo und die Archivelogs, so ähnlich wie in MS SQL-Server die Transaktionslogs (ldf-Dateien), wenn ich es richtig verstanden habe. In den Oracle-DBs werden zur Sicherheit die Redo-Loggruppen auf verschiedene Platten gespiegelt, und man kann auch die archivierten Redologs auf verschiedene Platten verteilen. Damit hat man dann immer eine oder mehrere Kopien, damit im Falle von Beschädigungen immer ein Recovery gemacht werden kann. Nun möchte ich bei einem MS SQL Server genau das selbe einrichten, und diese .ldf Transaktionslogs spiegeln. Nach der Doku kann ich bei CREATE DATABASE diese Datei mit LOG ON angeben, wenn ich sie nicht angebe, wird eine Default-Datei angelegt, und man kann hier mehrere Dateien angeben. Frage: Wie kann ich bei einer bereits laufenden Produktionsdatenbank solche Transaktionslogs auf anderen Platten dazufügen? Geht das so überhaupt, oder muß ich die Daten exportieren, und die Datenbank löschen und neu anlegen?
×
×
  • Neu erstellen...