Announcement

Collapse
No announcement yet.

Datenbank Ex- und Import

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank Ex- und Import

    Hallo,

    ich habe da ein Problem mit dem Ex- und Import von SQL Server 2005 Datenbanken.

    Hintergrund ist dass eine lokale Datenbank auf einen Webserver übertragen werden soll. Die "Initialzündung" der Datenbank ist erfolgt und wurde über ein Komplettbackup übertragen und wieder importiert. Jetzt soll jede Nacht ein differenzielles Backup erstellt, übertragen und importiert werden.

    Soweit kein Problem. Jetzt kommts:

    Die Datenbanken haben unterschiedliche Namen und eine direkte Verbindung zwischen den 2 Servern existiert nicht (darf auch nicht).

    Wie bekomme ich da einen Automatismus rein. Also um 23 Uhr automatisch exportieren (differenziell), via FTP hochladen und dann automatisch den Import der "diff.bak" bei unterschiedlichen Datenbanken ?

    Ich hoffe mir kann einer helfen ...

    Michael

  • #2
    Habe das Problem gelöst. Thread kann also geschlossen werden. Für alle die das interessiert, hier der Code:

    USE TestA

    DECLARE @BackupDirectory varchar(128)
    SET @BackupDirectory = 'D:\'

    DECLARE @DBName1 nvarchar(256)
    SET @DBName1 = 'TestA'

    DECLARE @DBName2 nvarchar(256)
    SET @DBName2 = 'TestB'

    DECLARE @Filename1 nvarchar(512)
    SET @Filename1 = @BackupDirectory + '\' + 'FULLBACKUP' + '_' + REPLACE(CONVERT(CHAR(10), GETDATE(), 104), '.', '') + '.BAK'

    DECLARE @Filename2 nvarchar(512)
    SET @Filename2 = @BackupDirectory + '\' + 'DIFFENZIELL' + '_' + REPLACE(CONVERT(CHAR(10), GETDATE(), 104), '.', '') + '.BAK'

    ------------------------------- Datenbank löschen und anlegen (EXISTS Prüfung)
    IF EXISTS(SELECT * FROM sys.databases WHERE name = @DBName2)
    DROP DATABASE TestB

    IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = @DBName2)
    CREATE DATABASE TestB ON PRIMARY
    ( NAME = N'Test', FILENAME = N'D:\TestB.mdf', SIZE = 3072KB)
    LOG ON ( NAME = N'TestB_log', FILENAME = N'D:\TestB_log.ldf', SIZE = 1024KB)

    ------------------------------- Backups
    SET NOCOUNT ON
    EXECUTE master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'Ba ckupDirectory',@BackupDirectory OUTPUT,N'no_output'
    BACKUP DATABASE @DBName1 TO DISK = @FileName1 WITH INIT

    SET NOCOUNT ON
    EXECUTE master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'Ba ckupDirectory',@BackupDirectory OUTPUT,N'no_output'
    BACKUP DATABASE @DBName1 TO DISK = @FileName2 WITH DIFFERENTIAL, INIT

    ------------------------------- Wiederherstellung in andere DB
    SET NOCOUNT ON
    EXECUTE master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'Ba ckupDirectory',@BackupDirectory OUTPUT,N'no_output'
    RESTORE DATABASE @DBName2 FROM DISK = @FileName1
    WITH
    MOVE 'TestA' TO 'D:\TestB.mdf',
    MOVE 'TestA_log' TO 'D:\TestB_log.ldf',
    NORECOVERY,
    REPLACE

    SET NOCOUNT ON
    EXECUTE master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'Ba ckupDirectory',@BackupDirectory OUTPUT,N'no_output'
    RESTORE DATABASE @DBName2 FROM DISK = @FileName2
    WITH FILE = 1, RECOVERY

    ALTER DATABASE Test SET RECOVERY FULL

    Comment

    Working...
    X