none
SQL 2008 R2 - Produktivdatenbank in eine zusätzliche Testdatenbank RRS feed

  • Frage

  • Hallo,

    ich habe einen 2008 R2 Server auf dem eine Datenbank für MS Dynamics läuft.

    Nun möchte ich gerne von der Produktivdatenbank eine Testdatenbank erstellen, weiß aber nicht wie ich das am besten machen soll.

    Kann ich die Datenbankdateien kopieren (SQL-Server Dienste gestoppt) und dann über die Funktion Datenbank anfügen eine Testdatenbank erstellen? Wäre für Hilfe sehr dankbar.

    Grüße

    Dienstag, 10. Juli 2012 19:36

Antworten

  • Hallo klamme,

    hierbei handelt es sich um die "logischen Dateinamen" (im Screenshot von Stefan die Spalte "ursprüngliche Dateiname" in der unteren Liste), die selten bis nie verwendet werden, nur z.B. bei DBCC ShrinkFile, da gibt man die logischen Namen an. Es schadet im dem Sinne also nicht, wenn die so bleiben.

    Die kannst Du nach dem Restore aber auch ändern, entweder in SSMS über die Datenbank-Eigenschaften => "Dateien" oder per T-SQL Skript mit dem ALTER DATABASE Befehl:

    ALTER DATABASE [Test2009] 
    MODIFY FILE (NAME=N'2009', 
                 NEWNAME=N'test2009');
                 
    GO
    ALTER DATABASE [Test2009] 
    MODIFY FILE (NAME=N'2009_LOG', 
                 NEWNAME=N'test2009_LOG')
    GO


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Mittwoch, 11. Juli 2012 06:51
  • Hi,

    Du kannst wie von dir angedacht die Dateien kopieren. Ohne Unterbrechung des Servers geht das aber auch mittels Backup und Wiederherstellung. Beim Wiederherstellen gibst Du dann einen anderen Datenbanknamen an. Wenn es nicht stört, dass die Datenbank für kurze Zeit nicht verfügbar ist, kannst Du die auch abhängen und dann die .mdf und .ldf Dateien kopieren, danach dann beide Datenbanken wieder anhängen.

      http://msdn.microsoft.com/de-de/library/ms190794.aspx

      http://msdn.microsoft.com/de-de/library/ms186390.aspx

    Beachte aber, dass - egal wie Du es machst - Datenbankdateien nicht in früheren Versionen von SQL Server verwendet werden können. D.h. wenn eine Datenbank bspw. einmal in einem SQL Server 2008 R2 eingebunden war, kannst Du diese Datenbank nicht mehr in SQL Server 2008 oder früher verwenden. Umgekehrt geht das aber problemlos, nur den Weg zurück gibts nicht mehr.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Juli 2012 20:05
    Moderator
  • Hi,

    Du kannst im Dialog, der fürs Anfügen der Datenbank angezeigt wird, den Namen der Datenbank anpassen. Dort solltest Du dann auch "test2009" reinschreiben, ebenso ggfs. die Pfade nochmal anpassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Juli 2012 20:51
    Moderator

Alle Antworten

  • Hi,

    Du kannst wie von dir angedacht die Dateien kopieren. Ohne Unterbrechung des Servers geht das aber auch mittels Backup und Wiederherstellung. Beim Wiederherstellen gibst Du dann einen anderen Datenbanknamen an. Wenn es nicht stört, dass die Datenbank für kurze Zeit nicht verfügbar ist, kannst Du die auch abhängen und dann die .mdf und .ldf Dateien kopieren, danach dann beide Datenbanken wieder anhängen.

      http://msdn.microsoft.com/de-de/library/ms190794.aspx

      http://msdn.microsoft.com/de-de/library/ms186390.aspx

    Beachte aber, dass - egal wie Du es machst - Datenbankdateien nicht in früheren Versionen von SQL Server verwendet werden können. D.h. wenn eine Datenbank bspw. einmal in einem SQL Server 2008 R2 eingebunden war, kannst Du diese Datenbank nicht mehr in SQL Server 2008 oder früher verwenden. Umgekehrt geht das aber problemlos, nur den Weg zurück gibts nicht mehr.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Juli 2012 20:05
    Moderator
  • Danke für Deine Antwort.

    Ich habe auch noch eine ndf Datei. Wenn ich die Produktiv-DB offline schalte, dann kopiere ich die 2009.mdf und die 2009_1.ndf in test2009.mdf und test2009_1.ndf
    Die 2009_2.ldf kopiere ich in test2009_2.ldf

    Wenn ich jetzt die Produktiv-DB wieder online schalte und ich mit der rechten Maustaste auf Datenbanken -> anfüge klicke und die test2009.mdf auswähle wird mir unter Anzufügene Datenbanken bei dem Datenbankname der Name der Produktiv-DB angezeigt.

    Auch bei den Datenbankdetails ist alles von der Produktiv-DB.

    Ist das denn richtig?

    Dienstag, 10. Juli 2012 20:22
  • Hi,

    Du kannst im Dialog, der fürs Anfügen der Datenbank angezeigt wird, den Namen der Datenbank anpassen. Dort solltest Du dann auch "test2009" reinschreiben, ebenso ggfs. die Pfade nochmal anpassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 10. Juli 2012 20:51
    Moderator
  • Hallo und Guten Morgen!

    Das bringt mich schon mal weiter. :-)

    Eine Frage noch bevor ich das durchführen werde, bei Datenbankname steht noch der Name der Produktiv-DB. Gibt es damit Schwierigkeiten? Denn den Namen kann ich nicht ändern.

    Grüße

    Mittwoch, 11. Juli 2012 06:23
  • Hallo klamme,

    hierbei handelt es sich um die "logischen Dateinamen" (im Screenshot von Stefan die Spalte "ursprüngliche Dateiname" in der unteren Liste), die selten bis nie verwendet werden, nur z.B. bei DBCC ShrinkFile, da gibt man die logischen Namen an. Es schadet im dem Sinne also nicht, wenn die so bleiben.

    Die kannst Du nach dem Restore aber auch ändern, entweder in SSMS über die Datenbank-Eigenschaften => "Dateien" oder per T-SQL Skript mit dem ALTER DATABASE Befehl:

    ALTER DATABASE [Test2009] 
    MODIFY FILE (NAME=N'2009', 
                 NEWNAME=N'test2009');
                 
    GO
    ALTER DATABASE [Test2009] 
    MODIFY FILE (NAME=N'2009_LOG', 
                 NEWNAME=N'test2009_LOG')
    GO


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Mittwoch, 11. Juli 2012 06:51
  • Vielen Dank für Eure Hilfe!

    Hat super funktioniert :-)


    Mittwoch, 11. Juli 2012 07:00