Kategoria DBA

SQL Saturday#824 Kraków

W dniu 9 lutego 2019 odbyła się po raz trzeci w Polsce, a po raz drugi w Krakowie konferencja SQL Saturday #824, na której poprowadziłem sesję „Cut the tables into partitions v.2”

Agenda SQL Saturday#824
Na SQL Saturday#824 z Kamilem Nowińskim
Czytaj dalej

Kilka znanych dobrych praktyk DBA w DWH

Poniżej przedstawiam kilka dobrych ogólnie znanych praktyk kierowanych do administratorów baz danych MS SQL Server związanych z utrzymaniem środowiska.

  • Tworzenie i utrzymywanie standaryzowanego środowiska – jeżeli tylko mamy taką możliwość starajmy się doprowadzić do ujednolicenia konfiguracji używanych serwerów MS SQL Server. Należy również starać się używać tego samego systemu Windows Server OS i wersji i wydań SQL Server. Podobnie należy starać się utrzymywać wszystkie swoje zadania utrzymania baz danych i zadania SQL Agent tak samo (przyjęta konwencja nazewnicza, konta techniczne itp.). Jeśli to jest tylko możliwe ustawiajmy te same parametry serwera czy też baz danych (Collation, Ansi Nulls, Arithmetic abort itp., unifikacja ścieżek dla data, logu i backupu). Utrzymanie standaryzowanego środowiska zmniejszy złożoność operacyjną i zmniejszy ryzyko wystąpienia błędów.

  • Twórzmy serwery baz danych jako dedykowane tylko do usług SQL Server – instancje SQL Server powinny zawsze działać na dedykowanym serwerze, nie powinny być na tych serwerach instalowane dodatkowe aplikacje czy usługi nie związane z SQL...
Czytaj dalej

SQL SERVER 2019 – Błąd przy uruchamianiu serwisów Polybase – The request failed or the service did not respond in a timely fashion

Podczas instalacji SQL Server 2019 dwa serwisy:

  • SQL Server PolyBase Engine
  • SQL Server PolyBase Data Movement

nie uruchamiały się. Był generowany błąd „The request failed or the service did not respond in a timely fashion

Komunikat błędu

Przyczyn tego błędu może być kilka:

1. Wygaśnięcie hasła dla konta, na którym uruchomiona była usługa

2. Zmiana hasła dla konta, na którym była uruchomiona usługa bez aktualizacji poświadczeń dla usługi

3. Nieprawidłowa konfiguracja protokołów sieciowych

W tym wypadku była to nieprawidłowa konfiguracja protokołów sieciowych. Należy uruchomić SQL Server Configuration Manager i w SQL Server Network Configuration\Client Protocols oraz w SQL Native Client 11.0 Configuration \Client Protocols włączyć TCP/IP oraz Named Pipes.


włączanie Named Pipes i TCP/IP

Po tej czynności wystarczy zrestartować usługi SQL Server a następnie ponownie uruchomić usługi Polybase

Działające usługi PolyBase
Czytaj dalej

Truncate Table with Partitions

SQL Server 2016 wprowadza modyfikację do instrukcji TRUNCATE TABLE, która pozwala czyścić określoną partycję lub zestaw partycji z tabeli, jednocześnie uzyskując zalety instrukcji TRUNCATE TABLE bez usuwania wszystkich danych z tabeli. Ten nowy mechanizm filtru w instrukcji TRUNCATE TABLE jest uzyskiwany za pomocą opcji WITH PARTITIONS () określającej partycję lub zestawy partycji.  

Przykład użycia:

  • TRUNCATE TABLE dbo.powerSQLPartitionTestTable WITH (PARTITIONS (2)); 
  • TRUNCATE TABLE dbo...
Czytaj dalej

Update w pętli dużej ilości danych tak aby nie przepełnić loga

Bardzo często zdarza się, że trzeba dokonać zmian na wielu milionach rekordów. Wykonując update czy delete na takiej ilości rekordów w ramach jednej transakcji doprowadzamy do sytuacji rozrostu loga transakcyjnego.

Oczywiście jeżeli byśmy takie operacje wykonywali małymi porcjami to powstało by dużo transakcji i po zakończeniu każdej z nich silnik sql serwera wstawiał by ponownie dane do loga transakcyjnego wykorzystując już zwolnione miejsca (Recovery model = SIMPLE)

Poniżej przedstawiam przykładowy kod:

Czytaj dalej

Odbudowa indeksu na wybranej partycji

W SQL Server można wykonać odbudowę indeksu dla wybranej partycji. Nie trzeba już przebudowywać całego indeksu na całej wybranej tabeli partycjonowanej.

Oczywiście we wcześniejszych wersjach mając SQL Server 2012 w codziennym procesie zasilania korzystając z danych ETL, stosowano dość powszechną praktykę:

  • Wyłączenie indeksów w tabeli docelowej (przynajmniej indeksy nieklastrowe)
  • Wstawienie nowych danych
  • Przebudowa NCI

Praca w ten sposób jest zwykle optymalna, ponieważ SQL Server nie musi aktualizować NCI podczas importowania danych. Wyobraź sobie jednak, że mamy siedem lat danych. Oznacza to 7 * 12 = 94 partycji, z których tylko jedna partycja jest aktywna. Dla nas odbudowanie całego indeksu będzie prawie 99% zbędna

Od wersji SQL Server 2008 można już przebudować indeks na wybranej partycji.

Czytaj dalej
DBBS