SQL SERVER 2005
André Henriksson
Agenda










Management Studio
CLR Integration
T-SQL förbättringar
Säkerhet
XML
HTTP-Endpoints
Integration Services
Reporting Services
Service Broker
SQL Server Express 2005
Management Studio




Enterprise Manager + Query Analyzer
Helt omskriven från grunden
Gränssnittet liknar Visual Studio
Hanterar flera olika typer av servers:




SQL Server
Analysis Services
Reporting Services
SQL Mobile Edition (SQL CE 3.0)
Management Studio

Nya funktioner:






Lösningar + projekt
Integration med källkodshanterare
Parallella fönster öppna samtidigt
Dynamisk hjälp
Assisterande editorer
Ännu fler mallar…
Management Studio
CLR Integration
T-SQL mot C# - Bin to Hex
if @bin is null return null
declare @len int, @b tinyint, @lowbyte tinyint, @hibyte tinyint, @index int, @str nchar(2), @result nvarchar(4000)
set @len = datalength(@bin)
set @index = 1
set @result = '0x'
while @index <= @len
begin
set @b = substring(@bin, @index, 1)
set @index = @index + 1
set @lowbyte = @b & 0xF
set @hibyte = @b & 0xF0
if @hibyte > 0
set @hibyte = @hibyte / 0xF
set @result = @result +
((case
when @hibyte < 10 then convert(varchar(1), @hibyte)
when @hibyte = 10 then 'A'
when @hibyte = 11 then 'B'
when @hibyte = 12 then 'C'
when @hibyte = 13 then 'D'
when @hibyte = 14 then 'E'
when @hibyte = 15 then 'F'
else 'Z'
end)
+
(case
when @lowbyte < 10 then convert(varchar(1), @lowbyte)
when @lowbyte = 10 then 'A'
when @lowbyte = 11 then 'B'
when @lowbyte = 12 then 'C'
when @lowbyte = 13 then 'D'
when @lowbyte = 14 then 'E'
when @lowbyte = 15 then 'F'
else 'Z'
end))
end
if (value == null) return null;
StringBuilder sb = new StringBuilder();
foreach (byte b in value)
sb.Append(b.ToString("X2"));
return sb.ToString();
CLR Integration
Riktlinjer

T-SQL är bäst för data access




Hantera stora mängder med data
Uppdatera/förändra data
Optimerat för data access
“Managed code” handlar om procedurell programmering och
beräkningar



Beräkningsintensiv affärslogik
Stränghantering
Kryptering
CLR Integration
Arbetsflöde
VB / C# / C++
VS .NET
Project
Assembly:
“CredLib.dll”
SQL Data Definition:
Runtime hosted by
SQL2005 (in-proc)
SQL Server
SQL Queries:
SELECT Payment (Total, Interest)
FROM Credit
WHERE CustomerID = '048349'
CREATE
then:
CREATE
CREATE
CREATE
CREATE
ASSEMBLY
FUNCTION
PROCEDURE
TRIGGER
TYPE
CLR Integration
Microsoft® Transact SQL (T-SQL)
(Microsoft® SQL 2000)
.NET Languages
(Microsoft® SQL Server™
“Yukon”)
User Defined
Functions
X
X
Stored Procedures
X
X
Triggers
X
X
User-Defined Types
X
Aggregates
X
CLR Integration
”User defined Types”



Små typer med inkapslad logik
Lämpligt för komplexa strukturer, exempelvis geospatiala data
Implementeras som “managed classes”
Vad UDT:er inte är:
Ett sätt att implementera en objektorienterad databas!
CLR Integration
”User defined Types”


Alla UDT:er måste implementera INullable
UDT gränssnitt





Konstruktor – Utan argument
IsNull – Null eller inte 
Parse – Sträng till objekt
ToString – Objekt till sträng
Kan också ha


Properties (Bör ha minst en…)
Metoder
CLR Integration
”User defined Aggregates”



Aggregerar värden över en grupp vid frågeprocessande enligt väldefinierat
gränssnitt.
Jämför med T-SQL: sum, avg med flera
UDA gränssnitt




Init - Initialisera gruppen
Accumulate - Ackumulera värden
Merge - Slå samman grupper
Terminate - Slutför beräkning och returnera svaret
Scenario:
Kan ofta reducera frågor som använder cursors till en enda fråga
User-defined type
User-defined aggregate
T-SQL Förbättringar





Nya datatyper för stora ”datamängder”
I SQL2000 var max storlek på varchar/varbinary 8000 bytes. Om
större så användes text/image.
I SQL2005 är maxstorleken utökad till 231, 230 om Unicode.
Använder MAX för specifikation. VarChar(MAX) 231 .
Text/image kommer sannolikt försvinna på sikt.
T-SQL Förbättringar
TOP

I SQL2000 kunde TOP specificeras med fixa antal rader eller procent av
resultatmängden i en select-sats. Om dynamiskt -> dynamisk SQL.

I SQL2005 tillåter TOP att uttryck specificerar antalet rader alternativt
procent av resultatmängden. Kan även användas i insert/update/deletesatser.

Skapar möjlighet att exempelvis lagra värdet i en konfigurationstabell.
T-SQL Förbättringar
TOP

SQL 2000
SELECT TOP 10 * FROM PERSON.ADDRESS

SQL 2005
DECLARE @num AS INT
SET @num = 5
SELECT TOP(@num) * FROM PERSON.ADDRESS
SELECT TOP(DAY(GETDATE())) * FROM PERSON.ADDRESS
T-SQL Förbättringar
”Common Table Expressions”



Uttryck som skapar en tabell som kan användas i kontexten av en
fråga.
Jämförbart med en vy (View) eller underfråga (subquery).
Rekursiva frågor i deklarationen gör det möjligt att exempelvis
skapa en CTE med trädstruktur.
Common Table
Expressions
T-SQL Förbättringar
PIVOT/UNPIVOT




Används för att kunna konvertera/gruppera/aggregera data för
förenklad analys.
Gör det enkelt att byta plats på rader och kolumner.
I SQL 2000 kunde detta göras genom att använda case-satser i
frågan.
I SQL 2005 är de tillägg i T-SQL.
T-SQL Förbättringar
PIVOT
Make
Year
Sales
Honda
1990
2000
Honda
1990
1000
Acura
1990
500
Honda
1991
3000
Acura
1991
300
Acura
1991
600
Acura
1992
800
SELECT * FROM CarSales
PIVOT(SUM(Sales) FOR Year IN
([1990],[1991]))t
Make
Honda
Acura
1990
3000
500
1991
3000
900
T-SQL Förbättringar
UNPIVOT
Make
Year
Sales
Acura
Acura
Honda
Honda
1990
1991
1990
1991
500
900
3000
3000
select Make,t.Year,t.Sales
from CarSalesPivot UNPIVOT
(Sales for Year in
([1990], [1991])) t
Make
Honda
Acura
1990
3000
500
1991
3000
900
Pivot/Unpivot
T-SQL Förbättringar

ROW_NUMBER


RANK


Skapar stigande nummerserie efter ”plats” i resultatmängden i
sorteringsordningen.
DENSE_RANK


Skapar en kolumn med radnummer i en resultatmängd efter en
sorteringsordning.
Samma som RANK men utan hål i nummerserien.
TILE(num)

Skapar gruppnummer baserat på ”num” i resultatmängden.
RANK
PART_RANK
DENSE_RANK
NTILE_4
T-SQL Förbättringar
LastName
1
2
2
2
2
6
7
7
9
1
1
2
3
4
1
1
2
1
1
2
2
2
2
3
4
4
5
1
1
2
2
1
3
4
3
4
Leverling
Buchanan
Dodsworth
King
Suyama
Peacock
Callahan
Davolio
Fuller
FirstName
Janet
Steven
Anne
Robert
Michael
Margaret
Laura
Nancy
Andrew
City
Kirkland
London
London
London
London
Redmond
Seattle
Seattle
Tacoma
Row_Number()
T-SQL Förbättringar
TRY/CATCH

Fångar alla Exceptions



TRY / CATCH model



Fel som normalt avslutar en transaktion
Skyddar mot terminering av batchar
Flödet går över till CATCH-blocket då fel som uppstår äventyrar en transaktion
Man tappar inte transaktionskontexten vid fel
Möjlighet att logga fel/state när fel som äventyrar en transaktion uppstår.
T-SQL Förbättringar
TRY/CATCH
BEGIN TRY
BEGIN TRAN
-- Constraint violations cause txn/batch-abort
-- control to client
INSERT TestTable1 VALUES (@a, @b)
COMMIT TRAN
END TRY
BEGIN CATCH TRAN_ABORT
ROLLBACK
INSERT TestTable1_Violations VALUES (@a, @b, GETDATE())
RAISERROR ('Logged bad insert', 17, 1) WITH TRAN_ABORT
END CATCH
Säkerhet



Separation av användare och scheman
Exekveringskontext (välj användare)
Lösenordspolicies




Samma som i Windows. (Password complexity, expiration and
lockouts)
Autentisering sker via säker kanal (default)
Inbyggt stöd för kryptering/dekryptering av data.
Infrastruktur för nyckel/certifikathantering.
Kryptering/Dekryptering
XML
Översikt
SQL
XQuery
XML Data
Type
FName
LName
Addr
Phone
Fax
XML
XML
FOR XML



I SQL2000 fanns följande ”dialekter” av genererad XML: raw, auto,
explicit
I SQL2005 utökas dessa med ”path” vilket gör det enklare att skapa
XML med specificerat ”utseende”.
Möjlighet att få ut resultatet som en kolumn av datatypen XML med
hjälp av ”type”-direktivet.
XML – FOR XML
XML
XML data type



Ny datatyp som är jämförbar med CLOB(varchar(max))
Sparas i databasen som ”native data” och inte på filsystemet.
Kan användas som:





en kolumn i en tabell
en variabel i T-SQL
en parameter till lagrad procedur eller funktion (UDF)
ett returvärde från en funktion (UDF)
Kan indexeras
XML
XML data type


Kan vara typad eller otypad
Typas genom att mappa en XML schema collection mot kolumnen



Möjlighet att ha flera olika scheman mot en kolumn
XML schema collection tillhör den databas den skapas i och kan ej
delas.
Prestanda höjs när typade kolumner används.
XML
XML data type


XQuery används för att ställa frågor mot XML-kolumnen.
5 funktioner för att jobba mot kolumnen:





Exist – Kolla om en viss nod eller data finns
Value – Hämta ett enskilt värde ur kolumnen
Query – Ställ XQuery fråga mot kolumnen
Modify – Modifiera data utan att ändra tabellstruktur
Nodes – Kan skapa rader/kolumner ur XML
XML - datatypen
HTTP End-points





I SQL2000 kunde man använda SQLXML 3.0, för att exponera en
databas som en web service genom IIS via ett ISAPI.
I SQL 2005 är detta inbyggt i servern.
Behöver ingen IIS.
Exponerade web services kallas för HTTP end-points.
Detta är avslaget när servern installeras. Måste manuellt
konfigureras.
HTTP End-points





Två portar kan användas, 80 eller 443.
Möjlighet att slå på komprimering (compression).
Autentisering: none, basic, digest eller integrated.
Möjlighet att sätta restriktioner på vilka IP-adresser som får anropa
servern.
Fullt stöd för interoperabilitet genom SOAP
HTTP Endpoints
Integration services








Kan jämföras med DTS i SQL2000.
Helt omskriven från grunden.
ETL-verktyg för enterprise-verksamhet
Nya adapters för att kunna skicka data in och ut.
Nya komponenter för transformationer.
Inbyggd ”data-cleansing”, felhantering osv.
Möjlighet att debugga flöde och data
Enkelt att bygga ut med egna adapters och transformationer i ”native” eller
”managed code”.
Reporting services

Introducerades i SQL Server 2000

Rapportgenereringsverktyg





Både för pappersrapporter och interaktiva rapporter
Innehåller verktyg för att skapa, förvalta och distribuera rapporter
Integration med Office
Utvecklingsmiljön liknar VS.NET
SQL Server 2005 förbättringar




Integration med AS, DTS, management tools
Förbättrad utvecklingsmiljö
Utökad interaktivitet i rapporterna
Report Builder
Reporting Services

Utskrifter




Multi-värde parameters



Gäller alla parameters
Multipla default-värden
Interaktiv sortering



Kan göras direkt utan export till annat format
Kan välja marginaler, sidorientering m m
Print Preview
Stöd för multikolumn och grupperad sortering
Sker på servern utan interaktion med databas
Egna kontroller



Databundna
Gruppera, sortera och filtrera
Tredjepartsleverantörer
Reporting Services
Service Broker




Ramverk för att skapa skalbara, asynkrona, löst kopplade och
distribuerade applikationer.
Kommunikationen kan vara tvåvägs – meddelanden i båda
riktningar.
Meddelanden lagras i en kö i SQL Server.
Ett “Service program” notifieras och processar meddelanden i kön
“när det vill”.
Service Broker
Service
Service program
Applikationer
Ordersystem
Order
Medd.
Medd.
Medd.
Order
Medd.
Order
Medd.
Kö
Hanteras av
Ordersystem
Service Broker
Medd.
Service Broker
Event Notifications


”Trigger” som baseras på händelser som genereras av DDL, DML
eller Trace-uttryck
Skillnaden mot en riktig trigger är att ingen kod exekveras utan att
ett meddelande läggs in i en kö i Service Broker för att sedan kunna
läsas.
Scenario: Hålla koll på tabellförändringar
Service Broker
Query Notifications


Meddelar när en
förändring av data skett
i en tabell som påverkar
en fråga.
Gör det möjligt att
använda cache i
middle-tier.
Scenario: Caching av data
Requests/
Responses
IIS/
ASP.Net
Query &
Subscription
/Results
Notification
of Cache
Invalidation
SQL Server
2005
Service Broker
Event Notifications
Notification services




Används för att skapa
och skicka notifieringar.
Notifieringar är
personaliserade.
Kan baseras på triggers
eller vara schedulerade.
Mottagare kan vara
mobiltelefon, PDA,
MSN Messenger
eller e-post.
Exempel på trigger:
”Skicka mig ett SMS när Ericssons
börskurs går över 25kr.”
Exempel på schedulering:
”Skicka mig temperaturen på
Åreskutans topp varje lördag och
söndag klockan 08.00 via e-post
och SMS.”
Andra förbättringar






Full-text sökning
Table partitioning
Snapshots
Online indexing
Dedikerad kanal för administratör
Analysis services – Business Intelligence
SQL Server 2005
Produktöversikt
Express
Express Manager
Säkerhet
T-SQL
CLR integration
Service Broker (Subscriber)
Gratis
Workgroup
Management Studio
Säkerhet
T-SQL
CLR integration
Service Broker (Subscriber)
Back-up hantering
Full-text sök
Notification Services
Standard
Management Studio
Säkerhet
T-SQL
CLR integration
Service Broker
Back-up hantering
Full-text sök
Notification Services
Integration Services
HTTP End-points
Reporting Services
BI (Utvalda delar)
Enterprise
Management Studio
Säkerhet
T-SQL
CLR integration
Service Broker
Back-up hantering
Full-text sök
Notification Services
Integration Services
HTTP End-points
Reporting Services
BI
SQL Server Express 2005
Tekniska specifikationer




1 CPU används
Max 1 GB RAM används
MAX 4 GB databasstorlek
Inga begränsingar på antalet kopplingar
SQL Server Express 2005
Enklare installation




Endast MSI-filer
Ingen beroende mot MDAC
Tydligt användargränssnitt
”Quiet-mode”

Default-instans: SQLEXPRESS
Max 50 instanser
Om installerat – val avbryta/nytt instansnamn

Click Once – Beta 3


SQL Server Express 2005
Säkerhet


Automatiserade uppdateringar via Windows Update
Vid installation är följande avslaget:





TCP/IP och Named Pipes
SQL Browser Service
SA-konto
Endast administratör kan administrera instans
Inbyggt stöd för kryptering/dekryptering
SQL Server Express 2005
Ny funktionalitet







Nya datatyper – VarChar(MAX), VarBinary(MAX), XML
XML-stöd via FOR XML, OPENXML och XQuery/XPath
CLR-integration
T-SQL – TOP, Pivot/Unpivot, CTE, Rankning/fönsterfunktioner
Service Broker
64-bitars stöd
Visual Studio 2005-integration
SQL Server Express 2005
XCopy-Deployment



Databaser hanteras som filer (MS Access)
Kopieras/Installeras med applikationen
Registreras automatiskt i SSE-instansen


Inget behov att registrera databas innan användning
Sökväg specificeras i ”connection”, AttachDBFilename

Auto-Close släpper fillås

SSE ersätter både MSDE 2000 och MS Access
SQL Server Express 2005
Jämförelse med MySql
MySql 4.1 (5.0)
Datatyper
SQL Server Express
2005
Native + CLR
Vyer
Ja
Nej (Ja)
Triggers
Ja
Nej (Ja)
Lagrade proc.
Ja
Nej (Ja)
UDF
Ja
Nej (Ja)
Cursors
Ja
Nej (Nej)
XML
Ja
Nej (Nej)
Transaktioner
Ja
Nej (Nej) INNODB krävs
Replikering
Ja
Ja (Ja) Begränsad
XCopy deplyment
Ja
Nej (Nej)
Kostnad
Gratis
Licenskostnad för ISV
Fler native
XCopy deployment
SQL SERVER 2005
Tidplan

CTP Feb (Community Technical Preview) NU!

Kan idag laddas ner från MSDN

Inom kort kommer beta3

Lansering sannolikt tidigt i höst
SQL Server 2005
Lär dig mer…

Swedish SQL Server User Group

Sveriges nya förening för användare av Microsoft SQL Server

Träffar
Forum
http://www.sqlug.se


André Henriksson
[email protected]
http://blogs.msdn.com/ahenrik
© 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only.
MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Content created by 3 Leaf Solutions