Administrator z przypadku Jak działa SQL Server i jak o niego dbać Warsztaty Stacja.IT, Warszawa 09.09.2017.
Administrator z przypadkuJak działa SQL Server i jak o niego dbać
Warsztaty Stacja.IT, Warszawa 09.09.2017.
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
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
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ć
Bartosz Ratajczyk
Konsultant SQL Server
Programista baz danych i aplikacji
Prelegent
Członek Komisji RewizyjnejData Community
MCSE: Data Platform, MCT
http://bartekr.net | [email protected]
Data CommunityPoland
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
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
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
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?
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
Microsoft Data Platform
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
Zbliża się 30 lat
1.0 1989 (OS/2) 2005 2005 (Windows)
1.1 1990 (OS/2) 2008 2008 (Windows)
4.2 1992 (Windows) 2008R2 2010 (Windows)
4.21 1994 (Windows) 2012 2012 (Windows)
6.0 1995 (Windows) 2014 2014 (Windows)
6.5 1996 (Windows) 2016 2016 (Windows)
7.0 1998 (Windows) 2017 2017? (Windows, Linux)
2000 2000 (Windows)
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
Bazy danych
Systemowe
master
msdb
tempdb
model
resource
Użytkownika
Każda inna baza danych
Edycje SQL Server
Edycje mogą się zmieniać wraz z kolejnymi wersjami SQL Server
Obecnie mamy trzy główne do wyboru:EnterpriseStandardExpress
Dodatkowe:DeveloperCompact
Wycofane:Business IntelligenceWeb
Garść narzędzi
SQL Server Management Studio (SSMS)SQL Server Data Tools (SSDT)SQL Server Configuration Manager (SSCM)Moduł PowerShell: sqlps / sqlserverDatabase Tuning Advisor (DTA)SQL Server ProfilerVisual Studio Code + rozszerzenie mssqlsqlcmdbcpmssql-scripter
Sql Server Configuration Manager
Baza danychJak wygląda?
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
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)
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
Struktury danych
HEAP (Sterta)
CLUSTERED INDEX (Indeks zgrupowany)
NONCLUSTERED INDEX (Indeks niezgrupowany)
COLUMNSTORE INDEX (Indeks kolumnowy)
MEMORY-OPTIMIZED
FILESTREAM
FILETABLE
ĆwiczenieUtworzenie bazy danych
• 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
Import i eksport danych
Dostępne metody
Import/Export Wizard
BULK INSERT
OPENROWSET (BULK)
bcp
SSIS
BULK INSERT
BULK INSERT DBAWorkshop.dbo.Sprzedaz
FROM 'D:\pliki\sprzedaz.txt'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\r\n'
);
GO
OPENROWSET (BULK) – import do kolumn
INSERT INTO DBAWorkshop.dbo.Sprzedaz
SELECT *
FROM OPENROWSET (
BULK 'D:\pliki\sprzedaz.txt',
FORMATFILE = 'D:\formaty\sprzedaz.fmt'
) AS dane;
OPENROWSET (BULK) - BLOB
INSERT INTO DBAWorkshop.dbo.Sprawozdania(Rok, Dokument)
SELECT
2017 AS Rok,
*
FROM OPENROWSET(
BULK 'D:\pliki\Sprawozdanie2017.pdf’,
SINGLE_BLOB
) AS Dokument;
ĆwiczenieImport / eksport danych
• 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)
Model bezpieczeństwaNadawanie uprawnień
Model bezpieczeństwa
Principals - obiekty, którym nadajemy uprawnieniaSecurables – obiekty, do których nadajemy uprawnieniaPermissions – akcje, które Principal może wykonać na Securable
GRANT – nadawanie uprawnienia do obiektuDENY – zabranianie uprawnienia do obiektuREVOKE – cofnięcie wcześniej ustawionego uprawnienia
https://technet.microsoft.com/en-us/library/2009.05.sql.aspx
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
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
Podstawowe uprawnienia
SELECT
INSERT
UPDATE
DELETE
REFERENCES
CREATE
DROP
ALTER
EXECUTE
CONTROL
Przykłady
GRANT SELECT ON schema::sprzedaz TO HRUser;
DENY DELETE ON dbo.Users TO HRPrivilegedUser;
REVOKE EXECUTE ON sales.DailyReport FROM Robert;
ĆwiczeniaNadawanie uprawnień
• 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
Kopie zapasoweTworzenie i odtwarzanie
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:\backup\dbaworkshop.bak’
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
RPO i RTO
Recovery Point Objectivedo którego momentu musimy odtworzyć dane?
inaczej: ile danych możemy stracić?
Recovery Time Objectivejak długo możemy czekać na odtworzenie danych?
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
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 minutCodziennie 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
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:\backup\DBAWorkshop.bak’
ĆwiczenieKopie zapasowe i odtwarzanie
• 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
Automatyzacja codziennej pracySQL Server Agent
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
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)
Ćwiczenie końcoweSQL Server Agent
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.Sprzedazsą takie same.
Przydatne inne narzędziaKomercyjne i darmowe
Narzędzia komercyjne
IDERA: SQL Diagnostic Manager
Sentry One: SQL Sentry
RedGate: SQL Toolbelt
Quest: Spotlight
Dbwatch: dbwatch
ApexSQL: ApeSQL Monitor
Narzędzia darmowe
• dbatools / dbareports
• sqlserver (moduł PowerShell, Microsoft)
• Open Query Store
• Plan Explorer (SentryOne)
• SQL Search (RedGate)
• SSMSBoost
Ćwiczenie dodatkowedbatools
• Zainstaluj moduł dbatools
• Znajdź polecenie modułu sprawdzające informacje o ostatnich kopiach zapasowych na serwerze i je wykonaj
W sieci
sqlskills.com
brentozar.com
sqlperformance.com
simple-talk.com
sqlservercentral.com
https://nocolumnname.wordpress.com/community-scripts/
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.