18/04-2006 | Henrik Farnø

På kursus i SQL Server 2005

Med et produkt, som ikke er blevet opdateret i 5 år, er der naturligvis sket bunker af store og små forbedringer, så det var naturligt at få Otto til at hoste op med et Microsoft kursus i selvsamme.

Kurset (afholdt hos Microworld) strakte sig over fire dage, hvor vi i raskt tempo blev ført gennem SQL Server 2005. Underviseren, en englænder, som bruger SQL Server 2005 til daglig samtidigt med, at han underviser. Dette gav klart en skarpere fremlæggelse af stoffet, idet kurset hermed blev krydret med personlige erfaringer. Kurset var struktureret som en række moduler, og det er i denne ånd, jeg vil gennemgå highlights:

SQL server 2005 overview

Foruden en spisebrødsseddel over nyheder, som ville blive gennemgået samt en gennemgang af den nye SQL Server management studio, var det vigtigste Schemas.

Alle objekter (tabeller, views, triggere etc.) er nu tilknyttet et schema, dvs. en tabels fulde reference er nu ejer.schema.tabel (eksempel dbo.products.product)

Med indførelsen af schema i SQL Server 2005, får man nu mulighed for at styre sikkerhed på schema-niveau i stedet for på objektnivau – dvs. at det bliver enklere at tildele rettigheder på områder af en database. I gamle dage skulle man ind på hver enkelt tabel, hvis man ville differentiere sikkerheden. Personligt vil jeg nu forvente, at schema-begrebet vil være til mest nytte i komplicerede databaser med mange objekter. Her vil det være nemmere at gruppere tabeller og stored procedures i områder, således, at der skabes et overblik for udviklere og administratorer gennem navngivning i lighed med namespaces i .NET.

Transact-SQL Enhancements in SQL Server 2005

Bortset fra, at overskriften ikke sælger billetter hos et bredere publikum, var der mange godbidder:

  • Partitionerede tabeller: Muligheden for at styre på hvilke filer/diske data skal gemmes. Hvis man eksempelvis hare en tabel med 30 millioner navne – kan man oprette sin tabel så viseligt, at A-G bliver gemt på en disk, H-N på en anden og O-Å på en helt tredje. Særdeles praktisk hvis man skal have bedre performance
  • Covering indexes – mulighed for at tage søjler med i et index som ikke er er del af nøglen. Igen muligheden for at forbedre performance i visse scenarier
  • Rekursive forspørgsler gennem et begreb der kaldes Common Tabel Expressions. CTE som det forkortes, er en magtfuld syntaks for at skabe et alias for et select statement
  • Struktureret fejlhåndtering i stored procedures – det er nu muligt at lave try – catch i sin sql kode

Using XML

XML er blevet sin egen datatype, hvor der kan tilknyttes schema. Man kan vælge, om man vil gemme hele dokumenter eller kun fragmenter. Der er muligheder for at foretage forespørgsler i Xquery og lave indekser, der understøtter disse forespørgsler. Naturligvis er der også metoder til at konvertere resultatet til en relationel repræsentation. Uden at gå yderligere i detaljer kan det blot konstateres, at XML i SQL Server 2005, ikke længere er en eftertanke, men en fuldgyldig måde at forstå data.

Using Service Broker

En af tidens buzzwords er service orienteret arkitektur, hvilket i den ideelle verden betyder, at klienter og services kun kender hinanden gennem de beskeder de udveksler.

Hvis man erstatter en service med en anden, er klienten principielt uberørt heraf. For at kunne opnå en så høj grad af afkobling mellem systemerne, skal de også kunne tale sammen asynkront, dvs. at klienten skal kunne sende en besked til servicen uafhængigt af, om servicen tilfældigvis er oppe eller ej. Dette har længe været muligt gennem Windows Message Queuing. Nu er der skabt en implementering i SQL Server, der understøtter det samme scenarie.

Native HTTP Support

Man behøver ikke længere IIS for at kommunikere med SQL Server 2005 gennem HTTP, men bruger den indbyggede Windows 2003 support. Man har mulighed for at programmere webservices direkte i SQL Server, hvorved man kan eksponere stored procedures og views direkte.

Øvelser med denne nye feature overbeviste mig om, at den vil finde god anvendelse på rette tid og sted, da det er forholdsvis simpelt. Naturligvis vil man formodentlig ikke eksponere mange services i en konkret implementation, men muligheden for at detailstyre sikkerheden ned på Stored Procedure niveau, giver muligheder som tidligere krævede specialbygget kode.

Using notifcation services

Ligeså begejstret for service broker og http support, ligeså negativ er jeg for notification services. Idéen er rigtig, rigtig god – muligheden for at lade SQL-server notificere abonnenter om forskellige hændelser, men øvelser og manuel konfiguration af XML-filer (intet schema) overbeviste mig om, at praktisk brug er for besværligt i forhold til andre veje. Microsoft, det er er en ommer!!!

Using the CLR

Dette er nok den mest hypede feature i den nye SQL Server – muligheden for at skrive .NET kode direkte nede i SQL Server, i modsætning til T-SQL. Muligheden for strengbehandling og array håndtering gør, at en lang række problemer, der bare var svære i T-SQL, nu går som en leg. Desuden bliver det nu meget lettere at integrere SQL-server til andre systemer (Extended Stored Procedures suk!). Man skal dog huske på, at hvis man bruger .NET, mister man muligheden for at inspicere koden direkte, således som man kan gøre det med Stored Procedures. Den officielle holdning er derfor, at man bruger T-SQL i så videst muligt omfang, og kun bruger .NET hvor det er nødvendig til f.eks tunge beregninger.

Developing Client Applications

De to store nyheder var:

  • SQL Server understøtter nu asynkrone kald
  • Understøttelse for Bulk Copy Operationer

Using SQL Management Objects

Nej hvor fedt – endelig er SQL DMO blevet flyttet til .NET, dvs. (næsten) alle operationer i SQL serveren kan nu programmeres (herunder backup, restore, transfer, replikering mv). Idéen med SQL DMO er, at alle objekter er en del af et hieraki, som man så kan gå ind og manipulere. SQL DMO er ikke noget nyt produkt, men set fra et .NET synspunkt, har det bare været “smerte” at tilgå!

Andet

Udviklingen af DTS pakker foregår nu helt i Visual Studio 2005. Om det er en god ide ved jeg ikke, men metoder og datatransformationer er i hvert fald gjort mere tidsvarende.

Af: Henrik Farnø
Kategorier: Teknologi

Der er lukket for kommentarer.