it-swarm-eu.dev

Mohu obnovit soubory .bak serveru SQL bez serveru SQL?

Mám nějaké velké .bak soubory z výpisu SQL Server 2005.

Mohu je obnovit bez použití serveru SQL, buď do PostgreSQL, MySQL nebo do plochých textových souborů?

Nejužitečnější by bylo řešení s otevřeným zdrojovým kódem.

17
Abe

Zde je to, co navrhuji:

  1. vytvořte virtuální počítač se systémem Windows s dostatkem místa na disku pro uložení zálohy. Zkopírujte tam záložní soubor. Pokud ještě nemáte schopnost vytvářet virtuální stroje, můžete tak učinit pomocí bezplatné produkty jako Oracle VirtualBox .
  2. stáhněte a nainstalujte zkušební edici SQL Server . Nezapomeňte zahrnout jak databázový stroj, tak nástroje pro správu - kompletní.
  3. pokud má VM dostatek místa pro uložení zálohy, ale ne dostatek místa pro jeho obnovení, můžete provést „virtuální obnovení“ pomocí zkušební verze produktu od Red- Brána se stejným názvem (což umožňuje interakci se záložním souborem, jako by byl obnoven). Jinak normální obnovení databáze .

  4. Jakmile je databáze dostupná (prostřednictvím normální obnovy nebo virtuální obnovy), můžete generovat skripty pro schéma a data následujícím způsobem:

    • Otevřete Management Studio a připojte se k vaší instanci.
    • Otevřete Průzkumník objektů.
    • Klepněte pravým tlačítkem myši na nově obnovenou databázi, zvolte Úkoly> Generovat skripty ...
    • Klikněte na Další, poté na Další
    • Na stránce „Vybrat možnosti skriptu“ přejděte dolů a nastavte „Data skriptu“ na hodnotu TRUE
    • Klepněte na tlačítko Další
    • Zkontrolujte všechny relevantní objekty a klikněte na Další
    • Zkontrolujte požadované tabulky a klikněte na Další
    • Vyberte skript do souboru. Nyní budete mít soubor, který obsahuje všechny vaše objekty a data pomocí SQL Server insert syntaxe, budete si muset hrát s výstupem, abyste jej dostali ve formátu, který pracuje pro Postgres (nejsem zasvěcen žádným drobným syntaktickým rozdílům).

Případně můžete zkusit hrát pomocí nástroje nástroj bcp a extrahovat data do souborů CSV nebo podobných, ale budete muset udělat tuto tabulku za stolem nebo použít nějaké chytré skriptování (PowerShell, T-SQL , C #/SMO atd.), Abyste pro vás vygenerovali všechny příkazy bcp. Jakmile je v souborech CSV, mělo by být triviální hromadné načítání dat do Postgresu (ale stále budete mít nějakou práci na generování tabulek).

Jako konečný návrh, pokud soubor .bak není ginormous a data nejsou důvěrná, jsem více než ochoten vyzkoušet a vygenerovat soubory pro vás ve formátu, který potřebujete. Mám spoustu Windows VM s prostorem, výzvou by bylo dostat soubor .BAK na místo, kde ho mohu získat - zejména pokud je větší než většina podporovaných služeb pro sdílení souborů.

19
Aaron Bertrand

Bohužel neexistuje způsob, jak získat přístup k obsahu souboru .bak, aniž byste měli hluboké znalosti vnitřních prvků samotného souboru. Dokážu zde myslet na jednu osobu, která by mohla mít informace o těchto informacích, ale nemůžu mluvit s tím, zda by vám řekla, jak by se to mělo dělat.

Budete tedy muset nainstalovat instanci serveru SQL. Musíte také zajistit, aby tato instance mohla mluvit s vaším serverem Postgres (frigging with pg_hba.conf) Jakmile budete mít, máte pár dobrých cest k migraci dat.

První cestou by bylo nainstalovat Postgres Windows ODBC ovladač a nastavit připojení k pg serveru.) Pak můžete použít SSIS ke skriptu migrace dat. Při instalaci databázového serveru doporučujeme nainstalovat SSIS.

Druhá možnost zahrnuje také připojení ovladače ODBC), ale můžete vytvořit propojený server v SQL Serveru a pomocí SQL Serveru spouštět vložky v instanci pg. Na tuto otázku jsem již dříve odpověděl nemělo by být těžké najít.

UPRAVIT

Chcete-li začlenit Aaronův komentář, jakmile uvedete SQL Server do provozu, můžete také exportovat data do plochých souborů různými způsoby. Pokud zvolíte tuto cestu, dejte mi vědět a já zveřejním několik způsobů, jak to udělat

ÚPRAVA (2):

Proces propojeného serveru nemusí být nejlepším přístupem, pokud nechcete vytvořit struktury předem. Je to můj preferovaný způsob, ale obvykle už mám strukturu na obou stranách.

To ponechává odpověď Aarona Bertranda jako nejlepší odpověď. Vezměte prosím na vědomí, že kromě datových typů (IDENTITY vs. SEQUENCE, postgres nezná nic o NVARCHAR, protože nastavíte kódování na samotné databázi). Postgres neví nic o CREATE CLUSTERED INDEX ( CLUSTER může pracovat pro vás). Nakonec, protože v komentářích vidím, že budete používat prostorová data, postgresql neví nic o CREATE SPATIAL INDEX syntaxe. Abyste mohli vytvořit prostorové indexy, musíte nainstalovat postgis a použít klíčové slovo INDEXTYPE. Nakonec se ujistěte, že se schématy správně pracujete.

Dlouhý příběh krátce:

  1. Generování skriptů a dat pomocí metody Aarona Bertranda (pravděpodobně bych se držel úrovně tabulky)
  2. Vezměte na vědomí index DDL (pokud je stále platný), ale nezahrnujte jej
  3. Jakmile jsou struktura a data na místě, vytvořte indexy na postgresu
7
swasheck