Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MSDE Datenbanken auf anderen PC portieren (https://www.delphipraxis.net/77946-msde-datenbanken-auf-anderen-pc-portieren.html)

FrankBrin 27. Sep 2006 07:13

Datenbank: MSDE • Version: Neuest • Zugriff über: TADO

MSDE Datenbanken auf anderen PC portieren
 
Moin DPler,
ich habe mir auf meinem Rechner mehrere umfangreiche Datenbanken unter MSDE erstellt. Nun möchte ich diese DBen auf einen anderen PC portieren bzw. in einem SETUP Progi (Installshield) die Datenbanken mitinstallieren.
Wie stell ich das am Einfachsten an?

Gruß Frank
:wall:

marabu 27. Sep 2006 07:20

Re: MSDE Datenbanken auf anderen PC portieren
 
Moin Frank,

du kannst das per SQL erledigen. BACKUP DATABASE und RESTORE DATABASE sind die beiden Befehle, deren Beschreibung du studieren musst.

Grüße vom marabu

FrankBrin 27. Sep 2006 07:28

Re: MSDE Datenbanken auf anderen PC portieren
 
Hi marabu!
Ja, das hab ich mir schon gedacht und auch über den dbaMgr2k damit gespielt - erfolglos. Über Script hab ich nun keine Erfahrung. Hast du evtl. ein Beispiel für mich? Hab keine Lust alle Seiten der MSDN zu durchsuchen.
Frank

jensw_2000 27. Sep 2006 08:35

Re: MSDE Datenbanken auf anderen PC portieren
 
SQL-Code:
-- der Ordner C:\SQLBackup muss existieren und muss auf einem lokalen beschreibbaren Datenträger liegen
BACKUP DATABASE [MeineDB]
TO
  DISK = 'C:\SQLBackup\MeineDB.bak'
WITH
  NOFORMAT,
  NOINIT,
  NAME = 'Backup, MeineDB',
  NOREWIND,
  NOUNLOAD,
  NOSKIP
SQL-Code:
-- existierende DB "MeineDB", DB wird nach Restore attached
-- Der Ordner DATABASE-DIR muss auf das Verzeichnis der existierenden "MeineDB" zeigen
RESTORE DATABASE [MeineDB]
FROM
  DISK = 'C:\SQLBackup\MeineDB.bak'
WITH
  FILE = 1,
  MOVE '<Hier der Name der MDF Datei von "MeineDB" auf deinem System>'
    TO '<DATABASE-DIR>\MeineDB_data.mdf', -- z.B. 'D:\SQLDATA\MeineDB\MeineDB_data.mdf'
  MOVE '<Hier der Name der LDF Datei von "MeineDB" auf deinem System>'
    TO '<DATABASE-DIR>\MeineDB_log.ldf', -- z.B. 'D:\SQLDATA\MeineDB\MeineDB_log.ldf'
  NOREWIND,
  NOUNLOAD,
  REPLACE
SQL-Code:
-- nicht existierende DB "MeineDB", DB wird nach Restore attached
-- Der Ordner DATABASE-DIR muss auf einem lokalen Laufwerk liegen und existieren
RESTORE DATABASE [MeineDB]
FROM
  DISK = 'C:\SQLBackup\MeineDB.bak'
WITH
  FILE = 1,
  MOVE '<Hier der Name der MDF Datei von "MeineDB" auf deinem System>'
    TO '<DATABASE-DIR>\MeineDB_data.mdf', -- z.B. 'D:\SQLDATA\MeineDB\MeineDB_data.mdf'
  MOVE '<Hier der Name der LDF Datei von "MeineDB" auf deinem System>'
    TO '<DATABASE-DIR>\MeineDB_log.ldf', -- z.B. 'D:\SQLDATA\MeineDB\MeineDB_log.ldf'
  NOREWIND,
  NOUNLOAD

EDIT:
Restore-Scripte "universalisiert" :mrgreen:

FrankBrin 27. Sep 2006 08:45

Re: MSDE Datenbanken auf anderen PC portieren
 
Na das sieht doch gar nicht so schlimm aus!
Vielen Dank für die schnelle Hilfe, werde es gleich ausprobieren

Gruß Frank

timog 27. Sep 2006 08:53

Re: MSDE Datenbanken auf anderen PC portieren
 
Hallo Frank,

notfalls - aber wirklich nur im Notfall - kann man ja noch immer die DB Engine auf dem Entwicklungsrechner beenden, die mdf und ldf dann kopieren und auf dem neuen System mit ATTACH im dbaMgr2k oder über die Kommandozeile wieder einlesen.

1) Mit dbaMgr2k
Auf http://www.asql.biz/files/DbaMgr-DbaMgr2K.doc (Achtung: Word Dokument) ist eine Anleitung, wie man das innerhalb von dbaMgr2k macht (Seite 32).

2) Kommandozeile mit osql und Stored Procedures
SQL-Code:
EXEC sp_attach_db @dbname = N'dbname', @filename = N'filepath\filename.mdf'

EXEC sp_attach_db 'Test', 'c:\Mssql\Data\Test.mdf'
3) Über einen ADO Provider String:
"Provider = SQLOLEDB.1; User ID = your_user_id; Password = your_password;Initial Catalog = db_name; Data Source = server_name;
Initial File Name = db_file_path\db_file_name.mdf"
Quelle: http://support.microsoft.com/kb/231923/EN-US/

Um das Lesen der Doku wirst Du aber wohl kaum herumkommen! Lies zumindest mal http://www.codeproject.com/database/...ect=1112494#14

SQL-Skript ist aber sicherlich die saubere Lösung :-)

Viele Grüße

Timo


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz