SQL Saturday. 1 pażdziernika w Krakowie!

2016-05-30

Ciekawy event nas czeka w październiku w Krakowie. SQL Saturday zawita 1 października 2016 do Krakowa. Wymagana jest rejestracja, ale udział jest za darmo. Zapłacić trzeba tylko za catering, ale to tylko dla łasuchów :)

sqlsat534_header (1)

 

 

By Rafał Kraik in Aktualności

SQL 2016: Live query statistics. Wodotrysk, czy przydatne narzędzie?

2016-05-30

Live Query Statistics to prezentowane na żywo postępy w wykonaniu zapytania wyświetlane na planie zapytania. Sama idea jest bardzo podobna do trybu debuggowania pakietu SSIS, gdzie widać, jak dane przepływają pomiędzy poszczególnymi komponentami pakietu. Tutaj prezentowane są podobne wyniki, ale dotyczy to operatorów planu zapytania:

live query statistics

W przypadku tego planu linie ciągłe prezentują kroki zapytania już wykonane. Linie przerywane to etapy przewarzania zapytania, które dopiero będą lub aktualnie są przetwarzane. Dodatkowo pod każdym operatorem znajdują się liczniki pokazujące, jak długot en operator pacuje i jaka część pracy jest już wykonana.

Ktoś mógłby powiedzieć – no i co z tego. Ładnie wygląda, ale jaki z tego pożytek? W sumie racja, chociaż patrząc w taki rysowany na żywo plan zapytania bardzo łatwo będzie wskazać etap, który zabrał najwięcej czasu. Wyraźnie widać też, które części wykonywały się równolegle a które szeregowo, jedna po drugiej. Niby nic, ale we wstępnej analizie problemu, może się rzeczywiście przydać.

Aby zobaczyć live query plan włacz przycisk na pasku narzędziowym (obok include actual execution plan) lub kliknij prawym przyciskiem w oknie query i wybierz „live query plan”. Jeżeli sesja ma włączoną tę opcję lub wykonano „set showplan xml on”, to statystyki na żywo można też oglądać w Activity Monitorze.

By Rafał Kraik in SQL 2016

SQL i Excel: Edycja tabeli w bazie danych z MS Excel

2016-05-29

Jeszcze tego nie sprawdzałem, ale już mi się podoba. Artykuł opisuje w jaki sposób bez żadnego dodatkowego oprogramowania a tylko z wykorzystaniem VBA pobierać dane z SQL Server i udostępniać je do edycji w Excel. Każdorazowo po zmianie komórki na inną zmiany są wysyłane z Excela do SQL-a.

Tak wiem, z punktu widzenia administratora bazy, gdyby wszyscy użytkownicy za każdym razem pobierali wszystkie dane i wszystko modyfikowali w Excelu to mielibyśmy chyba POWER HELL… ale jeśli chodzi o współdzielenie niewielkiej tabeli w niewielkim zespole, to może okazać się, że to się nieźle sprawdzi.

Naet jeśli coś miałoby tam nie działać to itak fajnie podejrzeć sobie funkcje VBA, którymi można operować z jednej strony na arkuszu a z drugiej strony na tabeli z bazy danych.

Link do strony: http://www.toadworld.com/platforms/sql-server/w/wiki/10392.editing-an-sql-server-table-in-excel 

By Rafał Kraik in Helpdesk

Powershell: Instalacja ISE

2016-05-29

Wchodzisz na serwer. Chcesz na szybko w przyjazny sposób napisać i zdebuggować skrypt. Niestety ISE nie jest zainstalowane. Można oczywiście uruchomić Server Manager >> kliknąć Features >> kliknąć Add Feature >> przejść przez kreatora i ISE będzie zainstalowane. Ale da się hmmm… bardziej profesjonalnie:

1. Po pierwsze załaduj moduł ServerManager. Moduł pozwala generalnie wykonywać te same operacje, co graficzny ServerManager

Import-Module ServerManager

2. Po drugie sprawdź, czy ISE jest zainstalowane (krok opcjonalny, jeżeli już wiesz, że nie jest…)

Get-WindowsFeature  '*ise*'
Display Name Name
------------ ----
[ ] Windows PowerShell Integrated Scripting Environm... PowerShell-ISE

brak znaku x w [x] oznacza, że Feature ISE jest mozlwy do zainstalowania, ale obecnie nie jest zaintalowany

3. Wykonaj instalację

Get-WindowsFeature  '*ise*' | Add-WindowsFeature
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Windows PowerShell Integrated Scripting E...

4. Gotowe! Zawołaj kolegów, żeby zobaczyli, jak guru instalujo programy na łindołsach

By Rafał Kraik in Power Shell

SQL 2016: Query store

2016-05-29

Z optymalizacja zapytań jest pewien problem… programista wykonuje testy na swoich małych zestawach przykładowych danych, specjalnie nie przykładając się do optymalizacji. Ma działać – to jest jego cel. Wydajność jest bolesna dla użytkownika i administratora, z którym w pierwszej kolejności kontaktuje się użytkownik, gdy mu coś nie działa. Niestety administrator nie ma wpływu na treść zapytań. Jedyne co możne zrobić to zaproponować pewne ulepszenia w zapytaniach programiście…

Od wersji 2016 administrator i programista dostają do dyspozycji nowe narzędzie – query store.

query_store_01 Czytaj dalej »

By Rafał Kraik in SQL 2016

SQL 2016: In-memory OLTP

2016-05-23

In memory OLTP poajwiło się w SQL server wraz z SQL 2014. Ogólnie rzecz biorąc przebudowano zasady przechowywania wierszy ze znanych nam drzew na ciagi dacych umieszczone w pamięci, a co za tym idzie również zupełnie zmieniono niepodważalne do tej pory święte zasady pracy z danymi, jak np. blokowanie rekordów, które tutaj nie występuje, Ładnie opisuje to cały cykl artykułów na MS SQL Tips:

https://www.mssqltips.com/sqlservertip/3121/getting-started-with-sql-server-2014-inmemory-oltp/

https://www.mssqltips.com/sqlservertip/3106/sql-server-2014-inmemory-oltp-architecture-and-data-storage/

Dwie rzeczy (co najmniej) były tu jednak niepokojące:

1. Czy dane umieszczone w RAM nie uciekną po wyłączeniu SQL?

2. Wiele znanych konstrukcji SQL i elementów SQL nie mogło być używanych z In memory OLTP.

Odpowiedź na pierwsze pytanie stanowi opcja DURABILITY. Ustawienie jej na SCHEMA_AND_DATA powoduje, że transakcje przechodzą w standardowy sposób przez log transakcyjny, a dane i struktura tabeli jest na stałe zapisywana na dysk.

Z drugim problemem było znacznie gorzej. Masz tabelę ale zapomnij o kluczach obcych, indeksie unikalnym, zapytaniach z UNION, OUTER JOIN itp. I oto pojawił się SQL 2016, a wraz z nim:

  • Maksymalny rozmiar tabeli 2 TB (poprzednio 250 GB)
  • Row Level Security
  • ALTER PROCEDURE działajaće dla procedur skompilowanych do kodu natywnego
  • ALTER TABLE zadziała blokując jednak na chwilę altywność użytkowników zmienianej tabeli
  • TDE
  • FOREIGN KEY / CHECK / UNIQUE / NULL w kolumnach klucza / NVARCHAR(MAX)
  • UNION / OUTER JOIN / SELECT DISTINCT / OR / NOT / EXISTS / TVF (Table Valued Functions) / Triggery …

Dodatkowo poprawiono też Garbage Collector. Odzyzkiwanie pamięci rozpoczyna się już na etapie pojedynczej transakcji, a co minutę specjalny proces dodatkowo zwalnia to, co nie jest już potrzebne.

Podsumowując – chyba w SQL 2014 trochę się pośpieszono z wypuszczeniem „pół produktu”. In memory OLTP w SQL 2016 wygląda na dość normalną w użyciu technologię.

By Rafał Kraik in SQL 2016

SQL: bcp: [Microsoft][SQL Native Client]I/O error while reading BCP format file

2016-05-23

Podczas standardowego uruchomienia bcp a plikiem format pojawiał się komunikat o błędzie:

[Microsoft][SQL Native Client]I/O error while reading BCP format file

Zazwyczaj I/O error oznacza, że pliku nie można odczytać, bo np nie ma go we właściwym katalogu, jest literówka w nazwie, albo plik jest, ale brakuje do niego uprawnień. Jednak tym razem wszystkie te przyczyny nie były prawdziwe.

Składnia pliku formatu wymaga, aby po ostatniej linii nacisnąć enter. Jeśli tej jednej dodatkowej pustej linii w pliku formatu nie ma, to pojawia się błąd I/O error…

By Rafał Kraik in SQL