SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru)

2. 8. 2019, Vladimír Klaus, přečteno 67x

SQL Server

Občas je třeba zkopírovat data z jedné databáze do druhé. Pokud jde o kompletní kopii, pak je samozřejmě ideální udělat zálohu a pak ji "obnovit" do jiné databáze, případně i na jiném serveru. Potíž nastává v případě, že potřebujete udělat zálohu na nějakém hostingu, což neprojde, protože pravděpodobně nemáte k dispozici lokální disky na daném serveru, kam by se záloha vytvořila. A vytvořit zálohu na jiný server nebo k sobě na počítač nelze.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 1

Pak nezbývá než použít funkci Import Data, což je funkce, u které vyberete zdrojovou databázi, tabulky, nějaké ty parametry a cílovou databázi, do které se vyexportovaná data ihned naimportují.

V SQL Management Studiu klikněte na cílové DB pravým tlačítkem a zvolte Tasks > Import Data. Zvolte správný driver a server, ale také autentifikaci. Pozor, v tuto chvíli vybíráte zdrojovou databázi!

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 2 

V dalším kroku vybíráte cílovou databázi. Pokud je to opět nějaká vaše lokální testovací, asi necháte Windows autentifikaci, ale jinak nezapomeňte nastavit správné jméno a heslo.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 3

Dále asi vyberete kopii tabulek.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 4
 
Nyní vyberte všechny tabulky, které chcete zkopírovat.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 5

Zde je ale velmi důležité označit všechny vybrané tabulky a použít Edit Mappings a povolit "Enable identity insert", tedy aby bylo možné při kopírování vkládat/přepisovat i ID položky. Další volby ohledně odstraňování existujících záznamů zvolte dle situace.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 6

Pokud na "Enable identity insert" zapomenete, velmi pravděpodobně dojde k chybám (konfliktu) ID a nic se nevloží.

"Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column"

Pak už nezbývá než export/import spustit...

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 7

Ještě souhrnná informace před spuštěním.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 8
 
Na závěr se ukáže, zda akce proběhla a kolik záznamů bylo zkopírováno.

SQL Server - Jak kopírovat data z jedné databáze do druhé (třeba i na jiném serveru), obr. 9
 
Pokud jste nevybrali smazání řádek, jde o přidávání do cílové tabulky. Takže počítejte s případnými konflikty díky shodnému ID. A pokud máte nastavené nějaké "constraints", tak ani to nemusí projít. Pak je na zvážení, zda constraints před touto akcí vypnout nebo celou situaci řešit jinak.

Zdroje: