2. Zanim zaczniemy
Czy wszyscy mają dostęp do instancji SQL Server (lokalnie albo zdalnie)?
Czy wszyscy mają zainstalowane:
SQL Server Management Studio
(opcjonalnie) PowerShell w wersji minimum 3.0
http://bartekr.net/ADM.StacjaIT.20170909/WarsztatyADM.zip
3. Plan dnia
Poznamy platformę danych Microsoft, ale skoncentrujemy się na silniku bazy
danych
Zobaczymy z czego składa się instancja i jak jest zbudowana baza danych
Wykonamy import danych do SQL Server, a potem je wyeksportujemy
Poznamy model bezpieczeństwa i nadamy uprawnienia do obiektów bazy
danych
Zrobimy i odtworzymy kopie zapasowe baz danych
Wykorzystamy SQL Server Agent do automatyzacji powtarzalnych czynności
Poznamy narzędzia, z których warto skorzystać przy codziennej pracy
4. Dla kogo ten warsztat?
Dla osób, które jeszcze nie znają albo słabo znają i dopiero zaczynają
pracę z SQL Server
Dla osób, które coś już robiły przy utrzymaniu bazy danych, ale nie czują
się z tym pewnie, albo boją się czegoś ruszyć, żeby nie popsuć
5. Bartosz Ratajczyk
Konsultant SQL Server
Programista baz danych i aplikacji
Prelegent
Członek Komisji Rewizyjnej
Data Community
MCSE: Data Platform, MCT
http://bartekr.net | b.ratajczyk@gmail.com
6. Data
Community
Poland
Poprzednio: Polish SQL Server User Group (PLSSUG)
Organizujemy comiesięczne spotkania osób, które chcą
pogłębić swoją wiedzę z zakresu platformy danych
Microsoft
Jesteśmy w kilku miastach w Polsce (Warszawa, Wrocław,
Kraków, Poznań, Katowice, Lublin, Bydgoszcz/Toruń,
Gdańsk)
Najbliższe spotkanie w Warszawie: 05.10.2017.
datacomunity.pl
meetup.com/plssug
7. SQL Saturday
Katowice
15 – 16 września 2017 r.
Miejsce: WSB, Chorzów
1 dzień warsztatów (Steph Locke, Mikael Wedham,
Tomasz Libera, Hubert Kobierzewski)
1 dzień konferencji (8 prelegentów zagranicznych, 7
krajowych)
Ceny: płatne warsztaty (600zł), darmowa sobota
http://sqlsaturday.com/664
#SQLSatPoland
8. SQL Day 2018
14 – 16 maja 2018 r.
Miejsce: Wrocław, Hala Stulecia
1 dzień warsztatów
2 dni konferencji
Agenda będzie znana na początku 2018 roku
Ceny: jeszcze nieznane
http://sqlday.pl
#SQLDay
9. O Was
Jakie macie doświadczenie z SQL Server?
Czy jest coś, czego najbardziej obawiacie się zrobić, żeby nie popsuć?
Czy macie doświadczenie z innymi bazami danych?
10. Konstrukcja warsztatu
9:00 – 13:00 Pierwsza część warsztatów
Ogólnie o SQL Server, tworzenie bazy, import/eksport danych
Model bezpieczeństwa, nadawanie uprawnień
13:00 – 14:00 Pizza
14:00 – 17:00 Druga część warsztatów
Kopie zapasowe, odtwarzanie po awarii, SQL Server Agent,
SQL Server i PowerShell, monitorowanie, narzędzia pomocnicze
12. SQL Server to nie tylko baza danych
SSIS (ETL)
SSRS (Raporty)
SSAS (Analityka)
Polybase (Hadoop)
R Services
MDS (zarządzanie danymi)
DQS (jakość danych)
FTS (wyszukiwanie
pełnotekstowe)
Replikacja
Wysoka dostępność
APS (przetwarzanie równoległe)
Usługi w Azure
14. Instalacja SQL Server
Co to znaczy „mam zainstalowany SQL Server”?
Każda instalacja SQL Server to tzw. INSTANCJA
Instancje mogą być:
domyślne (tylko jedna domyślna)
nazwane (wiele nazwanych)
Po co kilka instancji na jednym serwerze?
Różne wersje silnika bazy danych
Różne wymagania COLLATION
Różne wymagania administracyjne
16. Edycje SQL Server
Edycje mogą się zmieniać wraz z kolejnymi wersjami SQL Server
Obecnie mamy trzy główne do wyboru:
Enterprise
Standard
Express
Dodatkowe:
Developer
Compact
Wycofane:
Business Intelligence
Web
17. Garść narzędzi
SQL Server Management Studio (SSMS)
SQL Server Data Tools (SSDT)
SQL Server Configuration Manager (SSCM)
Moduł PowerShell: sqlps / sqlserver
Database Tuning Advisor (DTA)
SQL Server Profiler
Visual Studio Code + rozszerzenie mssql
sqlcmd
bcp
mssql-scripter
20. Tworzenie bazy danych
Zaczynamy od utworzenia bazy
danych z jednym plikiem danych i
plikiem logu
Dodajemy grupy plików
Dodajemy pliki do grup
Dodajemy kolejne pliki logów *
Ustawiamy model odzyskiwania
Ustawiamy opcje
* zazwyczaj wystarcza jeden plik logu
21. Log transakcyjny
Przechowuje informacje o wszystkich zmianach w bazie danych
Dane zapisywane sekwencyjnie
Charakterystyka cykliczna
Zanim dane trafią do pliku danych zapisywana jest informacja w logu
Write Ahead Logging – najpierw do logu trafia opis zmian, a dopiero
potem następują zmiany
Wykorzystywany także w innych mechanizmach (np. CDC, log shipping,
mirroring)
22. Plik danych
Zawiera dane, indeksy, metadane
Dane zapisywane na stronach, każda po 8KB
8 stron (ciągłych) tworzy extent
Jeden główny plik danych (mdf) i pliki dodatkowe (ndf)
Pliki danych przyporządkowujemy do grup (filegroups)
Grupy plików mogą być ustawiane tylko do odczytu
Jedna domyślna grupa plików
23. Struktury danych
HEAP (Sterta)
CLUSTERED INDEX (Indeks zgrupowany)
NONCLUSTERED INDEX (Indeks niezgrupowany)
COLUMNSTORE INDEX (Indeks kolumnowy)
MEMORY-OPTIMIZED
FILESTREAM
FILETABLE
25. • Utwórz bazę danych DBAWorkshop zawierającą cztery grupy plików o
nazwach FG00-FG03
• W każdej grupie utwórz po dwa pliki danych (na dowolnych dyskach)
• Utwórz jeden plik logu transakcyjnego
32. • Zaimportuj pliki: Sprzedawcy.txt, Sprzedaz.txt, Produkty.txt za pomocą
omówionych wcześniej metod. Dla każdego z plików spróbuj
wykorzystać inną metodę (Import/Export wizard, BULK INSERT,
INSERT + OPENROWSET)
• UWAGA: OPENROWSET wymaga utworzenia pliku formatu
• Napisz widok, który będzie zawierał dane o sprzedaży, gdzie zamiast
identyfikatora produktu będzie jego nazwa i cena oraz zamiast
identyfikatora sprzedawcy będzie jego imię i nazwisko
• Jeśli brakuje czasu – wykorzystaj kod z pliku 20_import.sql
• Eksportuj wynik widoku do pliku Sprzedaz.csv za pomocą bcp (lub
Import / Export Wizard – w zależności od dostępnego czasu)
34. Model bezpieczeństwa
Principals - obiekty, którym nadajemy uprawnienia
Securables – obiekty, do których nadajemy uprawnienia
Permissions – akcje, które Principal może wykonać na Securable
GRANT – nadawanie uprawnienia do obiektu
DENY – zabranianie uprawnienia do obiektu
REVOKE – cofnięcie wcześniej ustawionego uprawnienia
https://technet.microsoft.com/en-us/library/2009.05.sql.aspx
35. Dostęp
Dostęp do instancji – LOGIN
Dostęp do bazy danych – USER
Mapujemy LOGIN instancji na użytkownika bazy
danych (USER)
Contained databases nie wymagają LOGINu
LOGIN może być domenowy lub utworzony w
instancji SQL Server
36. Uprawnienia
Zasada najmniejszych uprawnień: dajemy dostęp tylko do tego, co jest
wymagane
Grupujemy uprawnienia w role – uproszczenie zarządzania
Role mogą być utworzone dla instancji (Server Role) lub bazy danych
(Database Role)
Uprawnienia są dziedziczone
38. Przykłady
GRANT SELECT ON schema::sprzedaz TO HRUser;
DENY DELETE ON dbo.Users TO HRPrivilegedUser;
REVOKE EXECUTE ON sales.DailyReport FROM Robert;
40. • Utwórz loginy Sprzedaz01 – Sprzedaz04, SprzedazManager
• Loginy z uwierzytelnianiem SQL Server
• Utwórz w bazie DBAWorkshop użytkowników o tych samych nazwach co
loginy
• Uruchom polecenia w pliku 30_uprawnienia.sql – utworzysz schemat
sprzedaz, tabele, widoki i procedurę; nie przejmuj się, że będą puste
• Nadaj uprawnienia SELECT do tabel w schemacie sprzedaz dla
użytkowników Sprzedaz01 – Sprzedaz04
• W jaki sposób można to zrobić? Jak to zrobić najprościej?
• Nadaj uprawnienia SELECT, UPDATE, INSERT, DELETE, EXECUTE do
wszystkich obiektów w schemacie sprzedaz dla użytkownika
SprzedazManager
• Jak to zrobić najprościej?
• Przetestuj poprawność rozwiązania logując się do nowych sesji jako
Sprzedaz01 – Sprzedaz04, SprzedazManager
42. Kopia zapasowa (Backup)
• Mocno zależy od ustalonego modelu odzyskiwania
• Dotyczy plików danych, może dotyczyć logu transakcyjnego
BACKUP DATABASE DBAWorkshop TO DISK = N’d:backupdbaworkshop.bak’
43. Model odzyskiwania (Recovery model)
FULL – odtworzenie do dowolnego
punktu w czasie, kopie zapasowe
plików danych i logu
SIMPLE – odtworzenie do
momentu ostatniej kopii
zapasowej, kopie zapasowe
danych
BULK LOGGED – pośredni między
FULL i SIMPLE, kopie zapasowe
plików danych i logu
44. RPO i RTO
Recovery Point Objective
do którego momentu musimy odtworzyć dane?
inaczej: ile danych możemy stracić?
Recovery Time Objective
jak długo możemy czekać na odtworzenie danych?
45. Rodzaje kopii zapasowych
PEŁNA (FULL) – kopia wszystkich danych
RÓŻNICOWA (DIFFERENTIAL) – kopia wszystkich zmian od
ostatniej PEŁNEJ kopii zapasowej
LOGU TRANSAKCYJNEGO – kopia logu transakcyjnego (nie
dotyczy SIMPLE recovery model)
FILE, FILEGROUP, PARTIAL, TAIL-LOG, COPY-ONLY
46. Przykładowe polityki kopii zapasowych
1. Podstawowy (dla modelu SIMPLE):
Codziennie o 18:00 pełna kopia zapasowa
2. Dla większych ilości danych (dla modelu SIMPLE)
Co poniedziałek o 18:00 pełna kopia zapasowa
Od wtorku do niedzieli o 18:00 kopia różnicowa
3. Dla modelu FULL z możliwością straty ostatnich 15 minut
Codziennie o 18:00 pełna kopia zapasowa
Między godziną 19:00 a 17:00 co godzina kopia różnicowa
Co 15 minut kopia logu transakcyjnego
47. Odtwarzanie kopii zapasowych
Odtworzenie pełnej kopii zapasowej
może się składać z kilku etapów i
obejmować kilka plików
Jeśli odtwarzamy z kilku rodzajów,
stosujemy opcję WITH NORECOVERY *
* z kilkoma wyjątkami
RESTORE DATABASE DBAWorkshop FROM DISK = N’C:backupDBAWorkshop.bak’
49. • Zrób pełną kopię zapasową bazy danych DBAWorkshop
• Zrób dowolną modyfikację w danych w bazie
• Zrób różnicową kopię zapasową do tego samego pliku, co
wcześniejszą pełną kopię zapasową
• Odtwórz kopię zapasową jako bazę DBAWorkshopKopia
51. SQL Server Agent
Oddzielna usługa instalowana wraz z silnikiem
bazy danych
Niedostępna dla wersji Express (chociaż widać w
SSCM)
Obsługuje cykliczne zadania do wykonania
zgodnie z ustawionymi harmonogramami
Powiadamia operatorów wysyłając alerty
Może wykorzystywać konta proxy
(pośredniczące) w różnych typach kroków
52. Zadanie (job)
Zestaw kroków do wykonania
Opcjonalnie z ustawionym
harmonogramem
Wysyła alerty i powiadomienia
Może być uruchomiony na
innym serwerze (w przypadku
MSX)
54. Utwórz job Zasilanie danych sprzedaży, który z pomocą polecenia BULK
INSERT będzie zasilał plik Sprzedaz.txt do tabeli dbo.Sprzedaz w
bazie DBAWorkshop codziennie o godzinie 03:12.
Po zasileniu danych ma zostać wykonana kopia zapasowa pełna do
katalogu dowolnego katalogu. Nowa kopia ma nie nadpisywać
istniejących wcześniejszych backupów.
Właścicielem joba ma być login DataLoader
Utwórz wszystkie wymagane elementy (login, tabelę, polecenie SQL,
harmonogram).
Na koniec odtwórz bazę danych DBAWorkshop z kopii zapasowej jako
DBAWorkshopRestore i sprawdź, czy dane w tabeli dbo.Sprzedaz
są takie same.
61. W najbliższym czasie w Stacja.IT
Angular 4 pragmatycznie – Warszawa, 16.09.2017.
Akademia trenera – Train the trainer – Kraków,
16.09.2017.
Podstawy MongoDB – Kraków, 30.09.2017.
Wprowadzenie do Machine Learning z wykorzystaniem
języka Python – Warszawa, 30.09.2017.
Editor's Notes
Co oznacza, kiedy mówimy że mamy SQL Server? Kiedy instalujemy poszczególne komponenty SQL Server wybieramy składniki wspólne (Shared components) jak i odrębne (instances). Każda instalacja SQL Server to odrębna instancja.
Oprócz wymienionych jest także APS (dawniej PDW) – dedykowane rozwiązanie do równoległego przetwarzania wielkich ilości danych
Plik zawiera instrukcje, które w bazie danych DBAWorkshop utworzą tabelę z danymi. Potem następuje sekwencja poleceń do oglądania danych i metadanych.
Pomijanie X pierwszych wierszy: FIRSTROW = Y (Y = X – 1)