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.