"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać

Post on 22-Jan-2018

123 views 0 download

Transcript of "Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać

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 | b.ratajczyk@gmail.com

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.