Microsoft SQL Server 2008

Co nowego w silniku bazodanowym SQL Server 2008 November CTP Udostępnij na: Facebook

Autor: Paweł Potasiński

Opublikowano: 18 grudnia 2007

Zawartość strony
 Wstęp   Wstęp
 Instalacja November CTP   Instalacja November CTP
 Resource Governor   Resource Governor
 Dane geometryczne i geograficzne   Dane geometryczne i geograficzne
 Opcja FILESTREAM   Opcja FILESTREAM
 Gotowe reguły dla Declarative Management Framework   Gotowe reguły dla Declarative Management Framework
 SQL Server Management Studio   SQL Server Management Studio
 Mechanizm Change Tracking   Mechanizm Change Tracking
 Kompresja kopii zapasowych   Kompresja kopii zapasowych
 Co nowego w kryptografii   Co nowego w kryptografii
 Dynamiczne dodawanie procesorów   Dynamiczne dodawanie procesorów
 Inne nowości w November CTP   Inne nowości w November CTP
 Podsumowanie   Podsumowanie

Wstęp

Kolejna wersja testowa systemu SQL Server 2008 ukazała się z miesięcznym opóźnieniem. Pierwotnie nosiła ona nazwę October CTP, ale finalnie ukazała się pod nazwą November CTP (lub CTP5). Już pierwszy kontakt z nową wersją sprawia, że zaczynamy rozumieć, czemu wspomniane opóźnienie miało miejsce. Nowych funkcjonalności jest więcej niż w jakiejkolwiek wydanej dotychczas wersji CTP! A zatem, co nowego w silniku bazodanowym w November CTP?

Uwaga

Ponieważ Microsoft SQL Server 2008 November CTP jest rozwojową wersją systemu, firma Microsoft nie gwarantuje, że opisane w artykule funkcjonalności znajdą się w wersji finalnej systemu w takiej postaci, jak to przedstawiono w tekście. Nie ma również gwarancji, że funkcjonalności te w ogóle znajdą się w wersji finalnej.

 Do początku strony Do początku strony

Instalacja November CTP

Już na etapie instalacji nowego Community Preview okazuje się, że mamy do czynienia z czymś zupełnie innym niż wersje dotychczasowe. Na początek wita nas nowe okno startowe instalatora (patrz poniżej).

Rys. 1. Okno instalatora SQL Server 2008 November CTP.

Okno to wygląda dość przystępnie, ale przy okazji pokazuje, że zastosowano nowe podejście do tematu instalacji składników serwera. Dodawanie nowych funkcjonalności do serwera, po dokonaniu pierwszej instalacji, odbywa się z poziomu linii poleceń. Czy to podejście jest słuszne? Okaże się w najbliższej przyszłości.

Instalacji SQL Server 2008 November CTP nie można przeprowadzić, akceptując domyślne ustawienia każdego z okien instalatora. Jesteśmy zobligowani do samodzielnego określenia takich opcji, jak konta dla usług (koniec z automatcznym ustawianiem konta LocalSystem) czy lista członków roli sysadmin (lokalni administratorzy nadal są domyślnie dodawani do tej roli). To potwierdza, że firma Microsoft idzie w kierunku dodawania do swoich produktów mechanizmów, wymuszających niejako najlepsze praktyki administracyjne. Każdą instancję można teraz nazwać (nazwę może otrzymać nawet instancja domyślna – przy czym domyślną nazwą takiej instancji jest MSSQLSERVER). Po zakończeniu instalacji z niekrytą satysfakcją stwierdzamy, że zmieniły się nazwy katalogów roboczych usług serwera. I tak, dla instancji domyślnej, katalog roboczy silnika baz danych ma nazwę MSSQL10.MSSQLSERVER (zamiast nic nie mówiącego MSSQL.1).

Uwaga

Instalator, mimo swoich oczywistych zalet, nadal ma kilka niedociągnięć. Na przykład, autor artykułu nie doszukał się w instalatorze okna, pozwalającego na ustawienie opcji collation w czasie instalacji serwera.

 Do początku strony Do początku strony

Resource Governor

Jednym z najbardziej oczekiwanych nowych mechanizmów w silniku Katmai jest Resource Governor. Pierwsza implementacja tego wielce obiecującego narzędzia pojawiła się w wersji November CTP. Administrator dostaje możliwość kontroli zasobów przydzielanych poszczególnym zapytaniom wykonywanym na serwerze. Na początku administrator określa tzw. pule zasobów (ang. resource pools), czyli pule określające limity dolne i górne przydziału pamięci oraz procesora. Następnie administrator definiuje grupy (ang. workload groups), którym zostają przydzielone pule. Ostatnią rzeczą do zdefiniowania jest funkcja klasyfikująca zapytania do odpowiednich grup. Jest to klasyczna funkcja skalarna pisana w języku Transact-SQL, która zwraca nazwę grupy. Dzięki temu zasoby mogą być przydzielane według praktycznie dowolnych kryteriów.

Rys. 2. Resource Governor - okno właściwości dostępne w Management Studio.

Poniższy fragment kodu ilustruje składnie Transact-SQL, które określają pulę zasobów, dwie grupy oraz funkcję klasyfikującą. Wykonanie poniższego kodu spowoduje włączenie mechanizmu Resource Governor i następujące jego działanie: jeżeli w serwerze będzie wykonywane zapytanie w kontekście logina nie należącego do roli sysadmin, to serwer przydzieli takiemu zapytaniu maksymalnie 50 proc. zasobów procesora(-ów).

USE master

GO

BEGIN TRAN

  CREATE RESOURCE POOL poolHalfCPU

  WITH (MAX_CPU_PERCENT = 50)

  GO



  CREATE WORKLOAD GROUP wgpAdmins 

  CREATE WORKLOAD GROUP wgpUsers USING poolHalfCPU

  GO

  CREATE FUNCTION dbo.ufnResGovClassifier()

  RETURNS SYSNAME

  WITH SCHEMABINDING

  AS

  BEGIN

    DECLARE @grpname sysname

    IF IS_SRVROLEMEMBER('sysadmin',SUSER_SNAME()) = 1

      SET @grpname = N'wgpAdmins'

    ELSE

      SET @grpname = N'wgpUsers'

    RETURN @grpname

  END

  GO

  ALTER RESOURCE GOVERNOR 

  WITH (CLASSIFIER_FUNCTION= dbo.ufnResGovClassifier)

COMMIT

GO

ALTER RESOURCE GOVERNOR 

RECONFIGURE

Do początku strony Do początku strony

Dane geometryczne i geograficzne

Programiści pracujący z systemem SQL Server wiele obiecują sobie po nowych typach danych, jakie mają być dostępne w SQL Server 2008. Z pewnością najciekawiej zapowiadają się geometryczne i geograficzne typy danych, wspólnie określane mianem „spatial data”.

W November CTP światło dzienne ujrzały dwa typy danych: geometry i geography. Pierwszy z nich pozwala na definiowanie obiektów na płaszczyźnie i w przestrzeni. Typ geometry jest wyposażony w liczne metody i właściwości, dzięki którym programista w prosty sposób może operować kształtami czy bryłami, testować ich wzalejmne ułożenie w układach współrzędnych czy dokonywać obliczeń takich wielkości, jak pola figur. Poniższy fragment kodu obrazuje użycie typu geometry do stworzenia punktów, policzenia odległości między nimi, stworzenia dwóch wieloboków (kwadrat i trójkąt), wyliczenia ich pól powierzchni i stwierdzenia, czy owe wieloboki mają część wspólną.

DECLARE @point1 geometry, @point2 geometry

SELECT 

  @point1 = geometry::STGeomFromText('POINT(0 0)', 0),

  @point2 = geometry::STGeomFromText('POINT(2 2)', 0)

SELECT 

  @point1.STX AS [Point1 X], 

  @point1.STY AS [Point1 Y], 

  @point1.ToString() AS Point1,

  @point2.STX AS [Point2 X], 

  @point2.STY AS [Point2 Y], 

  @point2.ToString() AS Point2,

  @point1.STDistance(@point2) AS Distance

  

DECLARE @square geometry, @triangle geometry

SELECT 

  @square = geometry::STGeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0))',0),

  @triangle = geometry::STGeomFromText('POLYGON((0 0,2 0,0 5,0 0))',0)

SELECT 

  @square.ToString() AS Square, 

  @square.STArea() AS [Square area],

  @triangle.ToString() AS Triangle,

  @triangle.STArea() AS [Triangle area],

  @square.STIntersects(@triangle) AS Intersection

Dla wspomnianych typów danych został też udostępniony nowy dedykowany rodzaj indeksów.

Do początku strony Do początku strony

Opcja FILESTREAM

Opcja FILESTREAM integruje silnik bazodanowy system SQL Server z systemem plików NTFS poprzez przechowywanie danych typu varbinary(max) jako pliki w systemie plików. Opcja ta umożliwia nawet przechowywanie danych przekraczających rozmiarem 2GB. Interfejsy systemu plików Windows zapewniają strumieniowe przesyłanie danych. Silnik systemu SQL Server dostarcza standardowych składni T-SQL do wykonywania operacji na danych plikowych oraz system uprawnień do zarządzania dostępem do danych tego typu.

Aby używać opcji FILESTREAM, należy najpierw włączyć ją na poziomie instancji SQL Server za pomocą procedury systemowej sp_filestream_configure. W zależności od tego, czy chcemy przechowywać dane lokalnie, czy z użyciem zdalnych zasobów, podajemy jako wartość parametru @enable\_level liczbę od 0 (opcja nieaktywna) do 3 (opcja aktywna, możliwe użycie zarówno lokalnych, jak i zdalnych zasobów dyskowych).

EXEC sp_filestream_configure @enable_level = 3

Po włączeniu opcji na poziomie serwera, należy stworzyć w odpowiedni sposób bazę danych. Baza danych, która może używać opcji FILESTREAM, musi mieć specjalnie zdefiniowaną grupę plików – w definicji grupy musi pojawić się klauzula CONTAINS FILESTREAM, zaś zamiast ścieżek do plików podawane są ścieżki do katalogów (patrz kod poniżej). Do katalogów tych SQL Server zapisuje dane przechowywane jako typ varbinary(max) z opcją FILESTREAM. Katalogi takie są tworzone przez SQL Server w momencie utworzenia bazy danych (wcześniej katalogi te nie mogą istnieć w systemie plików).

CREATE DATABASE FileStreamDB

ON PRIMARY (

  NAME = FileStream_data,

  FILENAME = N'D:\Data\FileStreamTest_data.mdf',

  SIZE = 100MB,

  FILEGROWTH = 20%

),

FILEGROUP FileStreamGroup CONTAINS FILESTREAM (

  NAME = FileStream_images,

  FILENAME = N'D:\Images'

)

LOG ON (

  NAME = FileStream_log,

  FILENAME = N'E:\Data\FileStreamTest_log.mdf',

  SIZE = 30MB,

  FILEGROWTH = 15%

)

GO

Także tabele, w których zostanie zdefiniowana kolumna z opcją FILESTREAM, muszą spełniać pewne określone wymagania (wymagana jest obecność kolumny unikalnej typu danych uniqueidentifier). Poniższy kod zawiera przykładową definicję tabeli wykorzystującej opcje FILESTREAM.

                   

USE FileStreamDB

GO

CREATE TABLE dbo.FileStreamTable

(

  FileId uniqueidentifier ROWGUIDCOL NOT NULL PRIMARY KEY DEFAULT NEWID(),

  FileContent varbinary(max) FILESTREAM

)

GO

Obsługa danych typu varbinary(max) z opcją FILESTREAM odbywa się przy użyciu standardowych składni języka Transact-SQL. Silnik baz danych potrafi także obsłużyć dane tego typu w transakcjach.

Do początku strony Do początku strony

Gotowe reguły dla Declarative Management Framework

Mechanizm Declarative Management Framework (DMF) został udostępniony już w CTP3 (w pierwszym publicznym CTP). Jego zadaniem jest umożliwienie administratorowi zarządzania serwerami za pomocą definiowanych przez administratora reguł. November CTP udostępnia bardzo ciekawe rozszerzenie DMF. Są to gotowe szablony reguł oparte o najlepsze praktyki zaimplementowane w narzędziu Best Practices Analyzer, używanym przez administratorów z poprzednimi wersjami systemu SQL Server. Co więcej, definiowanie reguł stało się bardziej intuicyjne. SQL Server Management Studio pokazuje właściwości reguł w czytelniejszy sposób, a dodatkowo daje możliwość wprowadzenia restrykcji co do wersji systemu, na którym dana reguła może/musi być wymuszana.

Rys. 3. Gotowe reguły dla Declarative Management Framework.

Do początku strony Do początku strony

SQL Server Management Studio

Także narzędzie SQL Server Management Studio doczekało się w wersji November CTP nowych funkcjonalności. Pierwszą, a zarazem budzącą najwięcej emocji, jest Intellisense, czyli podpowiadanie składni. Właściwie wskazówki sprowadzają się do podpowiadania nazw obiektów baz danych i serwera, zaś sam mechanizm wymaga jeszcze dopracowania, ale pierwszy krok, na drodze do oddania w ręce użytkowników pełnej obsługi podpowiadania składni, został uczyniony.

Rys. 4. Intellisense w Management Studio.

Nowością w Management Studio jest także możliwość uruchamiania skryptów na wielu serwerach jednocześnie. Jest to nowa funkcjonalność okna Registered Servers. Jeżeli zarejestrujemy kilka serwerów jako jedną grupę, to klikając prawym przyciskiem na grupie można otworzyć okno nowego skryptu, po uruchomieniu którego kod wykona się na każdym z serwerów znajdujących się w grupie, zaś wyniki zapytania z poszczególnych serwerów zostaną scalone do jednego zestawu wynikowego.

Rys. 5. Nowe funkcjonalości okna Registered Server.

Management Studio zostało ponadto wyposażone w nowe okno – Error List. W oknie tym listowane są błędy składniowe napotkane w otwartych skryptach lub w otwartym projekcie. Okno to można wywołać w November CTP z menu głównego, wybierając opcję View -> Error List.

Rys. 6. Okno Error List w Management Studio.

Do początku strony Do początku strony

Mechanizm Change Tracking

W wersji July CTP firma Microsoft zaprezentowała mechanizm Change Data Capture – asynchroniczny mechanizm śledzenia zmian w danych. W November CTP pojawił się podobny mechanizm– Change Tracking. Change Tracking jest synchronicznym mechanizmem śledzenia zmian w wierszach. Pozwala on stwiedzić, czy dane uległy zmianie i kiedy to nastąpiło, ale nie pozwala stwierdzić, jakie były wartości pól w tabelach czy ile razy zmieniła się zawartość wybranej kolumny od wybranego punktu w czasie. Mechanizm ten nie śledzi także zmian dokonanych przez niektóre polecenia (UPDATETEXT, TRUNCATE TABLE).

Włączenie Change Tracking na poziomie bazy danych odbywa się poprzez użycie polecenia ALTER DATABASE (patrz kod poniżej) lub używając okna właściwości bazy danych w środowisku Management Studio.

ALTER DATABASE AdventureWorks

SET CHANGE_TRACKING = ON

(CHANGE_RETENTION = 3 DAYS, AUTO_CLEANUP = ON)

Rys. 7. Mechanizm Change Tracking w oknie właściwości bazy danych.

Włączenie mechanizmu na poziomie bazy danych nie powoduje jeszcze, że zmiany są śledzone. Dopiero wykonanie odpowiedniej składni ALTER TABLE (patrz kod poniżej) lub zmiana ustawień w oknie właściwości tabeli, w której użytkownik chce śledzić zmiany, uruchamia właściwy proces śledzenia.

ALTER TABLE HumanResources.Department

ENABLE CHANGE_TRACKING

WITH (TRACK_COLUMNS_UPDATED = ON)

Po takiej konfiguracji mechanizmu administrator może przystąpić do korzystania ze specjalnych funkcji systemowych służących do wykrywania zmian i synchronizacji danych z wykorzystaniem Change Tracking. November CTP wprowadza wiele takich funkcji, np. CHANGETABLE – funkcję umożliwiającą podejrzenie zapisanych zmian w określonej tabeli.

SELECT * FROM CHANGETABLE(CHANGES HumanResources.Department,0) AS CT

 Do początku strony Do początku strony

Kompresja kopii zapasowych

November CTP umożliwia wykonywanie skompresowanych kopii zapasowych (docelowo funkcjonalność ta jest przewidziana dla SQL Server 2008 Enterprise Edition). Dzięki ustawieniu na poziomie serwera opcji „backup compression default” wszystkie wykonywane kopie zapasowe mogą być skompresowane.

USE master

GO

EXEC sp_configure 'backup compression default',1

RECONFIGURE

GO

Zawsze można też wymóc na serwerze kompresję konkretnej kopii zapasowej przez użycie opcji WITH COMPRESSION polecenia

BACKUP.

BACKUP DATABASE master

TO DISK = N'C:\master_compressed.bak'

WITH COMPRESSION

GO

Analogicznie można wymusić brak kompresji, używając opcji WITH NO_COMPRESSION.

Współczynnik kompresji nie jest konfigurowalny.

Informacja

W testach autorowi artykułu udało się uzyskać współczynnik na poziomie 5,5 (stosunek wielkości kopii nieskompresowanej do wielkości kopii skompresowanej). Testy pokazały też, że kompresja kopii zapasowych w November CTP jest silniejsza niż kompresja NTFS.

Do początku strony Do początku strony

Co nowego w kryptografii

W November CTP pojawia się nowy sposób zarządzania kluczami szyfrującymi – Extensible Key Management (EKM). Umożliwia on przechowywanie kluczy używanych przez SQL Server 2008 do szyfrowania danych „na zewnątrz”, na przykład na urządzeniach typu smartcard lub USB. Aktywacja EKM na poziomie instancji odbywa się przez zmianę właściwości odpowiedniej opcji serwera (patrz kod poniżej).

EXEC sp_configure 'EKM provider enabled', 1

Dzięki umożliwieniu wykorzystania mechanizmów niedostępnych w SQL Server użytkownik zyskuje dodatkowe możliwości w zakresie autoryzacji, procesu szyfrowania czy dystrybucji kluczy.

Drugą nową funkcjonalnością udostępnioną przez November CTP w zakresie kryptografii jest przezroczyste szyfrowanie danych – Transparent Data Encryption. Transparent data encryption dokonuje szyfrowania czasu rzeczywistego plików danych i plików dziennika transakcji. Poniższy fragment kodu pokazuje, w jaki sposób administrator może skonfigurować takie szyfrowanie poprzez stworzenie klucza szyfrującego dane oraz włączenia za pomocą składni ALTER DATABASE szyfrowania na poziomie bazy danych.

USE master

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!@#$23@eWa'

GO

CREATE CERTIFICATE MyCert WITH SUBJECT = 'My Certificate'

GO

USE AdventureWorks

GO

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATE MyCert

GO

ALTER DATABASE AdventureWorks

SET ENCRYPTION ON

GO

Szyfrowanie i odszyfrowywanie danych odbywa się w tle z wykorzystaniem wewnętrznych procesów systemu SQL Server. Przywrócenie kopii zapasowej bazy, która ma skonfigurowane przezroczyste szyfrowanie danych, nie jest możliwe bez posiadania klucza asymetrycznego lub certyfikatu użytego do zaszyfrowania danych.

Do początku strony Do początku strony

Dynamiczne dodawanie procesorów

SQL Server 2008 November CTP Enterprise/Developer Edition zainstalowany na 64-bitowej wersji Windows Server 2008 Datacenter lub Windows Server 2008 Enterprise Edition na platformie opartej o procesory Itanium pozwala na dynamiczne dodawanie procesorów (fizycznych i logicznych) bez potrzeby restartu usługi serwera. Dodatkowo serwer nie może używać software’owych rozwiązań NUMA (ang. Non-uniform Memory Access).

Do początku strony Do początku strony

Inne nowości w November CTP

Inne nowości w silniku bazodanowym November CTP to między innymi:

  • nowe możliwości wymuszania planu wykonania zapytań (hinty przekazywane za pomocą planu zapisanego w formacie XML, nowe funkcje i porcedury, m.in. do tworzenia planów z cache’u proceduralnego),
  • usprawnienia wykonywania zapytań do tabel partycjonowanych (przeszukiwanie indeksów według partycji, równoległość operacji wykonywanych na partycjach),
  • lepsza wizualizacja planów graficznych zapytań do tabel partycjonowanych,
  • usprawniony mechanizm przełączania partycji,
  • opcja LOCK_ESCALATION polecenia ALTER TABLE, która umożliwia zmniejszenie eskalacji blokad do zakresu pojedynczych partycji tabeli.

Do początku strony Do początku strony

Podsumowanie

SQL Server 2008 November CTP robi wrażenie. Ilość nowych funkcjonalności, w większości naprawdę ciekawych i przydatnych, jest imponująca i zdecydowanie większa niż w którejkolwiek z poprzednich wersji CTP. Wypróbowanie nowych mechanizmów zajmie użytkownikom z pewnością sporo czasu, ale warto ten czas poświęcić już teraz, by poznać nowe możliwości naprawdę ciekawie zapowiadającego się systemu SQL Server 2008.


  Paweł Potasiński (MVP, MCT, MCDBA, MCSE, MCSD, MCITP)
Starszy programista w Asseco Business Solutions S.A. W codziennej pracy zajmuje się rozwojem aplikacji ERP oraz zagadnieniami z zakresu RD. Wykładowca akademicki na kilku uczelniach w Warszawie. Wcześniej pracował jako administrator baz danych oraz trener. Założyciel i lider Polskiej Grupy Użytkowników SQL Server. Wolontariusz organizacji GITCA wspierającej działalność grup pasjonackich IT Pro. Prelegent na licznych konferencjach krajowych i zagranicznych, m.in. European PASS Conference i Microsoft Technology Summit. Microsoft Most Valuable Professional (MVP) w kategorii SQL Server od lipca 2008 roku.
Do początku strony Do początku strony

Microsoft SQL Server 2008