Archiwum SQLBlog

Klonowanie bazy danych – trzy sposoby

Czasami potrzebujemy coś przetestować, ale nie chcemy (lub nawet nie możemy) zrobić tego na aktualnej bazie. Dlatego dziś przedstawię trzy proste sposoby, jak klonować naszą bazę, by móc na niej działać bez szkody dla oryginału. Nie będziemy wykorzystywać żadnych dodatkowych narzędzi firm trzecich – wszystko robimy z poziomu Management Studio.

Sposób 1: Skrypty

Klikając prawym przyciskiem myszy na bazę w eksploratorze Management Studio mamy opcję Script Database as… -> CREATE to… -> New Query Editor Window. Utworzy nam się skrypt definiujący bazę, jej ustawienia. Ale – samą bazę, bez tabel. Te musimy przenieść w analogiczny sposób, czyli klikając prawym przyciskiem na tabelę i wybierając opcję Script Table as… -> CREATE To -> New Query Editor Window. Uzyskujemy schemat tabeli, łącznie z ustawieniami i relacjami. Sam schemat – bez danych.

Ten sposób jest prosty, ale mało wygodny, no i nie sprawdzi się jeżeli mamy dużo tabel. Do przeniesienia kilku tabel między bazami – tak, do większej „przeprowadzki” już nie.

Sposób 2: CLONEDATABASE

Jeżeli działamy na SQL Server w wersji 2012 lub wyższej, możemy skorzystać z tak zwanych DataBase Console Commands. Wszystko, co musimy zrobić by sklonować bazę, ogranicza się do napisania jednej linijki:

DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);

W nawiasie podajemy nazwę bazy oryginalnej i drugą, którą otrzyma nasz klon. I już, zrobione. Podobnie jak w przypadku skryptów – przeniesiony zostaje sam schemat, bez danych.

Sposób ten oferuje też dodatkowe możliwości, np sprawdzenie poprawności nowo utworzonej bazy czy zrobienie jej backupu. Po więcej informacji odsyłam do dokumentacji.

Sposób 3: Backup-Restore

Trzeci sposób to zrobienie backupu bazy oryginalnej (prawy przycisk myszy na bazę -> Tasks -> Back Up…), a następnie odtworzenie jej jako nowej bazy.

Możemy utworzyć nową bazę, kliknąć na nią PPM, wybrać Tasks -> Restore, następnie wybrać plik będący backupem bazy wzorcowej. W opcjach musimy zaznaczyć Overwrite the existing database (jeśli tego nie zaznaczymy, przywracanie nie powiedzie się).

Ta opcja, jako jedyna z tu prezentowanych, utworzy nam kopię bazy wraz z danymi – a to może być czasem pożądane.

Bonus: Pobieranie danych z wielu baz jednocześnie

Co, jeśli chcielibyśmy pobrać dane z kilku baz jednocześnie? Da się?

Nie dość, że się da, to jest to bardzo proste. Wystarczy przed nazwą tabeli podać nazwę bazy (i schemat), z której tą tabelę chcemy pobrać. Czyli, mając tabele Northwind i Northwind_Clone, nasze zapytanie może wyglądać np tak:

SELECT 'N’, * FROM [Northwind].[dbo].[Categories]

UNION ALL

SELECT 'N_Clone’, * FROM [Northwind_Clone].[dbo].[Categories]

W analogiczny sposób możemy też zrobić join między tabelami na różnych bazach.

Alexandretta

Kobieta gracz. Po godzinach pracy, z zapałem i piekielnymi ognikami w oczach biega po lochach i tłucze bogu ducha winne zombie czy inne szkielety. Miłośniczka wszelkiej maści cRPG. Notoryczne problemy z wyborem klasy i rasy, bo wszystko fajne... W chwilach zwątpienia zatraca się przy dźwiękach mieczy, roztrzaskiwanych tarcz i okrzyków bojowych, słuchając wiking metalu z zimnej, niegościnnej, odległej Skandynawii. Czasem zdarzy jej się pograć w jakąś strategię bądź nawet w FPP, ale tylko na easy, żeby nie psuć sobie niepotrzebnie nerwów.

Related Articles

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Back to top button