Posts tagged Denali
Wirtualna premiera SQL Server 2012
Jan 23rd
Właśnie dowiedziałem się, będąc w Redmond na szkoleniu Bare Metal SQL Server 2012, że 7 marca będzie miała miejsce wirtualna premiera SQL Server 2012! Jeżeli interesuje Cię nowa wersja SQL Servera, chcesz obejrzeć 30+ sesji prowadzonych przez czołowych specjalistów z całego świata i pracowników Microsoft, nie przegap tego wydarzenia i rejestruj się już dzisiaj na witrynie http://www.sqlserverlaunch.com. Na zachętę dodam, że w ramach premiery będzie miał miejsce mały konkurs z ciekawymi nagrodami. Po szczegóły odsyłam już na witrynę wydarzenia. Ja już się zarejestrowałem, a teraz wracam do tworzenia wirtualnych maszyn na potrzeby labów ;-)
Ważne! Wspomniana wirtualna premiera będzie wyłącznie wydarzeniem promującym najnowszą wersję SQL Servera i nie należy jej traktować jako oficjalnej premiery produktu. Nie oczekujcie więc, że 7 marca będziemy w stanie pobrać wersję RTM produktu :-)
[PL] Denali CTP3 – Nowe lepsze DBCC IND?
Jul 26th
Niedawno ukazała się nowa publiczna wersja Community Preview 3 (CTP3) systemu SQL Server vNext (codename Denali). Okoliczności ukazania się tej wersji były dość ciekawe, ponieważ wersja ukazała się dość niespodziewanie szybciej, niż ktokolwiek mógł podejrzewać. Jednocześnie firma Microsoft zarzuciła użytkowników bogactwem nowych wersji SQL Server 2008 R2 (Service Pack1) i 2008 (kilka Cumulative Update’ów). Jest więc co eksplorować, choć zalecam ostrożność, ponieważ z zaufanych źródeł wiem, że zwłaszcza Service Pack 1 do R2 jest źródłem licznych problemów (włącznie z tym, że dość trudno go poprawnie zainstalować).
Dopiero kilka dni temu znalazłem czas, by sprokurować sobie maszynę wirtualną do Denali CTP3. Maszyna działa pod kontrolą Windows Server 2008 SP1. Do tego trzeba było doinstalować parę rzeczy, ale na szczęście instalator wszystko dość jasno opisuje i nie ma problemów ze znalezieniem w sieci brakujących dodatków do systemu operacyjnego.
Jedną z pierwszych czynności po zainstalowaniu każdej nowej wersji SQL Servera jest w moim przypadku sprawdzenie, czy nie pojawiły się nowe widoki i funkcje dynamiczne. Uruchamiam zatem zapytanie:
SELECT 'sys.' + name FROM sys.system_objects WHERE [schema_id] = 4 AND name LIKE 'dm[_]%';
Przejrzenie listy w przypadku Denali CTP3 zaowocowało znalezieniem kilku ciekawych obiektów, ale najciekawszym z mojego punktu widzenia wydaje się być sys.dm_db_database_page_allocations. Jest to funkcja dynamiczna, która przyjmuje sporo parametrów: identyfikator bazy, identyfikator tabeli, identyfikator indeksu, numer partycji oraz rodzaj widoku. Lista parametrów przypomina widok sys.dm_db_index_physical_stats. Jednak nowa funkcja zwraca informacje prawie takie same, jakie dotąd można było uzyskać za pomocą polecenia DBCC IND. Możemy zatem obejrzeć, które strony wchodzą w skład konkretnego indeksu czy sprawdzić, z ilu poziomów stron dany indeks jest złożony. Przykładowe odwołanie do tej funkcji:
SELECT * FROM sys.dm_db_database_page_allocations( DB_ID(), NULL, NULL, NULL, 'DETAILED' );
Przykładowy wynik (lista stron zaalokowanych dla całej bazy, widok o największej liczbie detali):
Nie muszę tłumaczyć, o ile lepiej byłoby mieć w systemie widok dynamiczny, na dodatek w pełni wspierany i udokumentowany. Do szczęścia jeszcze poproszę jakiś oficjalny zamiennik dla DBCC PAGE :-)
[PL] SQL Server "Denali" CTP1 – Część 2.: T-SQL i programowanie
Nov 12th
Po badaniu SQL Server “Denali” CTP1 pod kątem nowości w SQL Server Management Studio przyszedł czas na eksplorację nowinek w T-SQL / programowaniu.
Poniżej to, co wyczytałem w dokumentacji lub samemu “namacałem” bawiąc się CTP1:
- Nowe DMVs:
- sys.dm_db_objects_disabled_on_compatibility_level_change
- sys.dm_db_uncontained_entities
- sys.dm_exec_describe_first_result_set
- sys.dm_exec_describe_first_result_set_for_object
- sys.dm_fts_index_keywords_by_property
- sys.dm_hadr_availability_group_states
- sys.dm_hadr_availability_replica_states
- sys.dm_hadr_database_replica_states
- sys.dm_hadr_database_synchronization_states
- sys.dm_hadr_instance_node_map
- sys.dm_hadr_name_id_map
- sys.dm_logconsumer_cachebufferrefs
- sys.dm_logconsumer_privatecachebuffers
- sys.dm_logpool_consumers
- sys.dm_logpool_hashentries
- sys.dm_logpool_sharedcachebuffers
- sys.dm_logpool_stats
- sys.dm_logpoolmgr_freepools
- sys.dm_logpoolmgr_respoolsize
- sys.dm_logpoolmgr_stats
Dość dobrze opisane są póki co DMVs sys.dm_exec_describe_*, które zwracają metadane dotyczące wyników zapytań / wykonania procedur. Dla przykładu zapytanie:
SELECT * FROM sys.dm_exec_describe_first_result_set (N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0);
zwróci metadane trzech kolumn (nazwy, typy danych, długości, nullability, etc.). Nie trzeba będzie bawić się w tworzenie tabel tymczasowych / rzutowania na sql_variant, by wykryć typy danych dla zwracanych kolumn.
Będzie też można łatwo dowiedzieć się, jak SQL Server typuje literały. Przykład:
SELECT * FROM sys.dm_exec_describe_first_result_set (N'SELECT 1', NULL, 0);
I już wiem, że 1 oznacza dla niego typ int. Bajer :-)
- Nowe widoki systemowe:
- sys.availability_groups
- sys.availability_replicas
- sys.registered_search_properties
- sys.registered_search_property_lists
- sys.sequences
- EXECUTE … WITH RESULT SETS – ma gwarantować właściwą ilość i postać wyników (typowane tabele). Przykład:
EXEC ('SELECT 1, 2, 3') WITH RESULT SETS ( ( A numeric(4,2) NOT NULL, B numeric(4,2) NOT NULL, C numeric(4,2) NOT NULL ) );
Wynik:
A B C
---- ----- ----
1.00 2.00 3.00
Z kolei uruchomienie takiego kodu:
EXEC ('SELECT 1, 2, 3') WITH RESULT SETS NONE;
powoduje zwrócenie następującego błędu:
Msg 11535, Level 16, State 1, Line 1 EXECUTE statement failed because its WITH RESULT SETS clause specified 0 result set(s), and the statement tried to send more result sets than this.
- THROW – polecenie, które ma zastąpić RAISERROR. Służy do wywoływania wyjątków. Póki co sprawdziłem, że działa bez parametrów w bloku CATCH (po prostu przekazuje napotkany wyjątek dalej) i sprawdza się jako generator błędów o severity 16:
THROW 50001, 'Error!', 1;
Ciekawa rzecz, że nie wygląda na to, by można było w THROW sterować poziomem błędu (patrz dokumentacja: http://msdn.microsoft.com/en-us/library/ee677615%28v=SQL.110%29.aspx).
- Stronicowanie w ORDER BY:
SELECT number
FROM master.dbo.spt_values
WHERE number BETWEEN 1 AND 1024
AND type = 'P'
ORDER BY number
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
Powyższe zapytanie zwróci 10 wierszy (numerki od 11 do 20), a bliższe przyjrzenie się planowi zapytania pokazuje, że operacja wybiera z tabeli 20 wierszy, po czym FETCH działa jak TOP i wybiera 10 wierszy. Oczywiście, OFFSET / FETCH ma sporo ograniczeń, o czym można się przekonać czytając dokumentację: http://msdn.microsoft.com/en-us/library/ms188385%28v=SQL.110%29.aspx.
- Sekwencje – czyli pseudo-autonumeracja w wielu tabelach jednocześnie. Jako komentarz niech posłuży kod:
USE Test; GO CREATE TABLE dbo.T1 (C1 int NOT NULL); CREATE TABLE dbo.T2 (C2 int NOT NULL); GO CREATE SEQUENCE dbo.S1 AS int START WITH 1 INCREMENT BY 1; GO INSERT INTO dbo.T1 (C1) VALUES (NEXT VALUE FOR dbo.S1); INSERT INTO dbo.T2 (C2) VALUES (NEXT VALUE FOR dbo.S1); GO SELECT * FROM dbo.T1; SELECT * FROM dbo.T2; GO
Wynik? Po jednym rekordzie w obu tabelach – w tabeli T1 wartość C1 = 1, w tabeli T2 wartość C2 = 2. Dobrze, że na świecie istnieje coś takiego, jak konkurencja. Wyraźnie widać bowiem, że Microsoft dodaje funkcjonalności przypominające mechanizmy działające od lat w innych systemach zarządzania bazami danych :-)
- Search Property Lists w Full-Text Search – to mnie na razie nie interesuje, więc tylko odsyłam do dokumentacj: http://msdn.microsoft.com/en-us/library/ee677637%28v=SQL.110%29.aspx.
- CREATE/ALTER/DROP SERVER ROLE – pisałem już o tym, że w Denali dodano takie składnie (obsługa ról na poziomie serwera).
- Nowe metody w typach przestrzennych – w tym Circular Arc (kółeczka? ;-)). Nawet jest na ten temat 20-stronicowy dokument: http://download.microsoft.com/download/d/9/4/d948f981-926e-40fa-a026-5bfcf076d9b9/Spatial_Denali_CTP1.docx.
I to na razie tyle z moich eksploracji. Jeśli ktoś znajdzie więcej “what’s new”, niech da znać. Już w CTP1 sporo jest breaking changes (nawet można je obejrzeć: http://msdn.microsoft.com/en-us/library/ms143179%28SQL.110%29.aspx), więc można się spodziewać, że ich finalna lista będzie dłuższa. Przede mną teraz bliższe spotkanie z nowymi SSIS, bo w CTP1 udokumentowano parę zmian. A zatem, stay tuned! :-)
[PL] SQL Server "Denali" CTP1 – Część 1.: Management Studio
Nov 11th
Microsoft udostępnił pierwszą wersję (build 11.0.1103) Community Preview (CTP) następnej wersji systemu zarządzania bazami danych SQL Server. Nowa wersja nosi nazwę kodową Denali i najpewniej otrzyma numer 2011 (a co za tym idzie, niewykluczone, że wersja RTM ujrzy światło dzienne w przyszłym roku). Zainstalowałem CTP1 na maszynie wirtualnej (to już nawyk, by nie instalować wersji testowych nigdzie indziej, jak tylko na wirtualnych maszynach, można sobie trochę stresu zaoszczędzić) i zacząłem przeglądać nowe funkcjonalności. Na pierwszy ogień poszło oczywiście…
..nowe SQL Server Management Studio (SSMS)! Już pierwszy rzut oka powiedział mi, że mam przed sobą aplikację opartą na silniku Visual Studio 2010. Czy to lepiej? Jeżeli za tym ma iść równie łatwe rozwijanie funkcjonalności (add-ins), to jestem za. Jeśli to poprawi stabilność i wyeliminuje dotychczasowe błędy, tym bardziej jestem za.
W samym SSMS pierwsze, co wpadło mi w oko, to snippety. Wciskając kolejno Ctrl+K, Ctrl+X znajdując się w edytorze skryptów uzyskujemy dostęp do listy dostępnych szablonów kodu do natychmiastowego wstawienia do edytowanego skryptu. Działa to identycznie, jak snippety w Visual Studio (nawet pojawiają się aktywne pola, po których wędrujemy wciskając Tab). Dotąd w SSMS namiastkę snippetów oferowało okno Template Explorer (zresztą wykorzystywane przeze mnie dość intensywnie), więc ucieszyła mnie nowa funkcjonalność, bo będzie można wstawiać kawałki kodu bez użycia myszy.
A że można też dodawać własne snippety (Tools – Code Snippet Manager), jest naprawdę dobrze.
Kolejny krok naprzód w SSMS to możliwość użycia skrótu Ctrl+K, Ctrl+S do otaczania zaznaczonego kawałka kodu blokami takimi, jak IF czy WHILE.
Klikając w SSMS w oknie Object Explorer napotkałem kilka ciekawostek:
- Obsługa w GUI Extended Events – na razie można tylko zobaczyć listę aktywnych sesji, zeskryptować sesję oraz wykonać operacje Export / Import (nośnikami oczywiście są pliki XML).
- Dodawanie ról na poziomie serwera (prawy klik na Server Roles w folderze Security oferuje opcję New Server Role…) – to oczywiście nowa funkcjonalność samego SQL Servera, a nie narzędzia, ale udało mi się ją namierzyć klikając w SSMS. Zdarzyło mi się wygenerować w SSMS i z powodzeniem uruchomić taki kod:
USE [master] GO CREATE SERVER ROLE [MyNewServerRole] GO ALTER SERVER ROLE [MyNewServerRole] ADD MEMBER [Denali\Pawel] GO USE [master] GO GRANT CONNECT ON ENDPOINT::[Dedicated Admin Connection] TO [MyNewServerRole] GO
Od razu przetestowałem, że nowe role można zagnieżdżać (i serwer broni się przed zapętleniem zależności między grupami). Wygląda to ciekawie, a sama możliwość dodawania własnych ról na poziomie serwera jest funkcjonalnością oczekiwaną w SQL Serverze od dawna.
- Integration Services mogą trzymać dane w dedykowanych bazach danych. W oknie Object Explorer pojawiła się pozycja Integration Services. Prawy klik na tej pozycji oferuje opcję Create Catalog, dzięki któremu użytkownik może założyć bazę danych, w której paczki SSIS mogą zapisywać swoje dane. A że w takich zabawach mam zawsze pod ręką otwartą sesję SQL Profilera, nie omieszkałem zauważyć, że owe bazy na potrzeby SSIS są tworzone przez podłączenia (attach) bazy wzorcowej trzymanej gdzieś w strukturze folderów SQL Servera “Denali”. W nowo utworzonej bazie można wdrażać projekty SSIS i tworzyć środowiska (Environments), dla których można ustawiać takie opcje, jak zmienne czy uprawnienia. Ciekawe… Trzeba się będzie temu bliżej przyjrzeć :-)
- W folderze Management można zauważyć folder Availability Groups. Na razie nie wiem nic na temat “grup dostępności”, ale wyczytałem, że rozchodzi się o HADR (http://msdn.microsoft.com/en-us/library/ff877884%28v=SQL.110%29.aspx). Niestety, brak klastra raczej wyklucza póki co testowanie przeze mnie tej nowinki.
- Z dokumentacji wynika, że najnowsze SSMS wspiera też debugowanie kodu T-SQL na SQL Server 2005 SP2 i nowszych wersjach SQL Servera. Tego nie mogę potwierdzić, ale pocieszający jest fakt, że jednak Microsoft nie odcina się całkiem od starszych wersji SQL Servera (irytujące jest choćby to, że Intellisense w SSMS 2008 nie działa dla poprzednich wersji).
- Niestety, nie mogę znaleźć, gdzie w opcjach SSMS można ustawić skróty klawiaturowe dla procedur składowanych…
- Co ciekawe, teraz SSMS może mieć interfejs w języku angielskim lub w języku, w jakim działa system Windows.
Tyle na teraz. Siadam do nowych zabawek w T-SQL / w programowaniu. Już wiem o kilku (sekwencje, stronicowanie, nowe DMVs, …), więc zapowiada się interesujący wieczór ;-) Z niecierpliwością czekam też na Wasze pierwsze reakcje. Może znajdziecie jakieś ukryte “ficzery”, których nie uda mi się znaleźć. Dajcie znać koniecznie!


Nazywam się Paweł Potasiński i pracuję w polskim oddziale Microsoft w dziale Small and Midmarket Solutions & Partners (SMS&P) jako Partner Technology Advisor.




