Tag: MSSQL

  • sqlpackage

    sqlpackage

    sqlpackage to świetne narzędzie do m.in. eksportu czy importu baz danych z serwerów Microsoft SQL Server (albo Azure).

    Eksport

    Przykładowy eksport (dane+schema):

    sqlpackage /Action:Export \
    /SSN:host.database.windows.net,1445 \
    /SU:uzytkownik \
    /SP:haslo \
    /SDN:nazwa-bazy-na-serwie \
    /TF:plik-kopii-zapasowej.bacpac

    Port możemy dodać po przecinku, tak jak w powyższym przykładzie.

    Nazwy SSN, SU, SP itd. to skróty od pełnych nazw:

    • SSN – SourceServerName
    • SU – SourceUser
    • SP – SourcePassword
    • SDN – SourceDatabaseName
    • TF – TargetFile

    Import

    Import budujemy tak samo, tylko zamieniamy Source<->Target:

    sqlpackage /Action:Import \
    /TSN:host.database.windows.net,1445 \
    /TU:uzytkownik \
    /TP:haslo \
    /TDN:nazwa-bazy-na-serwie \
    /SF:plik-kopii-zapasowej.bacpac

    Gdzie: TSN <=> TargetServerName itd…

    Użyteczne przełączniki

    Poniżej lista przełączników, które kiedyś mi się przydały:

    /TargetTrustServerCertificate:[True|False] - pomijanie weryfikacji certyfikatu serwera docelowego (np. przy imporcie)
    /SourceTrustServerCertificate:[True|False] - pomijanie weryfikacji certyfikatu serwera źródłowego (np. przy eksporcie)
    /Diagnostics:[True|False] - włączenie szczegółowych logów
    /DiagnosticsFile:<ścieżka> - włączenie szczegółowych logów, do pliku
    /OutputPath:ściezka - definiuje, gdzie mają być wyplute pliki (domyślnie do katalogu roboczego)

    Instalacja

    Instrukcje instalacji na różnych systemach/dystro:

    ArchLinux

    Narzędzie dostępne w AURze: https://aur.archlinux.org/packages/sqlpackage

    dotnet (multiplatformowe)

    Jako globalne narzędzie:

    dotnet tool install -g microsoft.sqlpackage

    Aktualizacja:

    dotnet tool update -g microsoft.sqlpackage

    Dodatkowe akcje

    sqlpackage obsługuje jeszcze 5 dodatkowych akcji, których jeszcze nie używałem (zaktualizuję artykuł, jak mi się zdarzy):

    • Extract – eksport samego schema, bez danych, plik dacpac
    • Publish – inkrementalne aktualizowanie schema bazy danych bazując na pliku dacpac
    • DeployReport – tworzy raport ze zmianami, które wdrożyłaby akcja „Publish”
    • DriftReport – tworzy raport ze zmianami, które zostały wprowadzone od ostatniej „rejestracji” bazy
    • Script – buduje skrypt, który inkrementalnie aktualizuje bazę danych do docelowego schema

    Dokumentacja

    Wszystkie akcje i przełączniki są opisane na MSDN.