Sql Server 2005
Davide Mauri
Factory Software
davidem@factorysw.com
Developer Overview
Agenda
Introduzione
Nuovi ambienti di sviluppo
Novità T-SQL
SQLCLR
XML
Web Services
Service Broker
Integration Services
Reporting Services
2
Nuovi Ambienti di Sviluppo
3
Situazione attuale (SQL 2000):
Tool di admin e query separati
Enterprise Manager, dbmaint.exe
Query Analyzer
Strumenti separati per il tuning
Index Tuning Wizard
Profiler
Tool di configurazione differenti
4
Client Network Utility
Server Network Utility
Service Manager
Obiettivi dei tools in SQL Server 2005
Indirizzare le problematiche aperte con SQL
Server 2000
Scalabilità e produttività prima di tutto
Investire in una nuova piattaforma
Managed code dappertutto
Integrazione tra i vari servizi
SQL Server, Analysis Server, DTS, Reporting Server, SQL Server
Mobile Edition, Notification Services…
Integrazione con Sql Server CE
5
Nuovi Ambienti di Sviluppo
SQL Server Management Studio
Sostituisce EM e Query Analyzer
Elementi chiave
Object Explorer
Query Editor
Dialog
Summary View
Activity Monitor
Help
Amministrazione database
6
Attività “Workflow” in DTS
Generazione di T-SQL
Nuovi Ambienti di Sviluppo
SQL Computer Manager
Pensato per il sistemista
Supporto per tutti i servizi
7
SQL Server (relational)
SQL Server Analysis Services
Reporting Services
Estensione di Computer Manager
MMC-based
Utilizza le API di WMI
Disponibile anche in SQL Server Express
Rimpiazza Client Network Utility, Server Network
Utility, SQL Service Manager
Nuovi Ambienti di Sviluppo
Agent
Miglioramenti su performance e scalability
Supporto per AS e DTS
Alert basati su eventi WMI
Sicurezza completamente ridisegnata
SQLCMD
8
Rinpiazza osql e isql
Estensioni di T-SQL
Supporto per la connessione admin dedicata
Nuovi Ambienti di Sviluppo
SQLiMail
Supporto a SMTP e cluster
Non richiede ne Outlook ne MAPI
Surface Area Configuration
Per minimizare i possibili punti di attacco
abilitare / disabilitare le feature
Reporting Services Configurator
9
Non più necessario editare a mano i file XML
Novita T-SQL
10
Novità di T-SQL
11
Nuovi statement
Funzioni di Ranking
CTE e query ricorsive
Nuovi operatori relazionali
Gestione degli errori
DDL Trigger
Snapshot Isolation
Nuovi Statement
Al posto di stored procedure di sistema nuovi
statement:
CREATE LOGIN
CREATE USER
Possibilità di criptare i dati
insert tab1(id, cardno) values (1,
encryptByKey(Key_GUID('fookey'), '12345678'))
12
Possibilità di utilizzare certificati digitali
Funzioni di Ranking
Funzioni “row oriented”
ROW_NUMBER()
RANK()
DENSE_RANK()
NTILE(<espressione>)
<funzione_ranking>
OVER([funzione_partizionamento]<clausola_order_by>)
13
Clausola TOP
In SQL Server 2000: SELECT TOP <costante>
In SQL Server 2005: SELECT TOP <espressione>
dove <espressione> può essere una variabile o una sub-query
non correlata che ritorna uno scalare
supportata anche per i comandi INSERT, UPDATE e DELETE
Rimozione parziale supporto clausola ROWCOUNT
14
funziona ancora con SELECT
di default è ignorata per UPDATE, DELETE ed INSERT se l’istanza
non è impostata per essere compatibile con la versione 2000
Common Table Expression
Common Table Expression
Simile ad una vista ma incorporata nella query
WITH YearOrdersCTE (ordertear, numorders)
AS
(
SELECT YEAR(OrderDate), COUNT(*)
FROM
Orders
GROUP BY
YEAR(OrderDate)
)
SELECT * FROM YearOrdersCTE
15
Nuovi operatori: PIVOT/UNPIVOT
PIVOT: trasforma righe in
colonne
può effettuare anche
aggregazioni
utile per scenari OLAP o
reportistica
NON è dinamico! è necessario
sapere il numero di colonne a
priori
UNPIVOT: trasforma colonne
in righe
16
è l’inverso dell’operazione di
PIVOT
utile per normalizzare dati
k1
k2
c1
1
A
v1
1
B
v2
1
C
v3
2
A
v4
2
B
v5
2
C
v6
PIVOT
k1
A
B
C
1
v1
v2
v3
2
v4
v5
v6
UNPIVOT
k1
A
B
C
1
v1
v2
v3
2
v4
v5
v6
k1
k2
c1
1
A
v1
1
B
v2
1
C
v3
2
A
v4
2
B
v5
2
C
v6
Gestione degli errori: TRY/CATCH
Finalmente: modello TRY/CATCH
Se si verifica un errore nel blocco TRY, l’esecuzione passa
al blocco CATCH
Se non si verifica nessun errore, il blocco CATCH viene
ignorato
Ogni errore che imposta @@error è intercettabile
BEGIN TRY
INSERT INTO Employees (empid, empname, mgrid)
VALUES (1, 'Emp1', NULL)
END TRY
BEGIN CATCH
/* eventuali azioni correttive */
END CATCH
17
Gestione errori: informazioni
Quattro nuove funzioni nel blocco CATCH:
18
ERROR_NUMBER()
ERROR_MESSAGE()
ERROR_SEVERITY()
ERROR_STATE()
Tutte e quattro le funzioni possono essere
chiamate più volte e mantengono il valore (non
come @@error…)
Scenari di snapshot isolation
Business
DBA e sviluppatori
19
Reportistica e query ad hoc che girano insieme ad
attività OLTP
Database che normalmente hanno accessi in lettura
ma con alcune scritture
Migrazione di applicazioni da Oracle®
Aggregazioni consistenti (e.s. AVG, SUM)
Join e intersezione di indici senza escalation ad un
livello di isolamente più alto
Riduzione dei deadlock
SQLCLR
20
SQLCLR
E’ possibile utilizzare .Net per scrivere
NON E’ STATO PENSATO PER SOSTITUIRE T-SQL
21
Stored Procedure
User Defined Function
Aggregates
User Defined Data Types
Trigger
Ma per sostituire le Stored Procedure Estese!
Esempio di UDF
using System.Data.SqlServer;
using System.Data.Sql;
public class TestUDF
{
public static int Cube(int x)
{
return x*x*x;
}
}
csc.exe /t:library /r:sqlaccess.dll /out: TestUDF.dll TestUDF.cs
CREATE ASSEMBLY TestUdf FROM ‘TestUdf.dll‘
CREATE FUNCTION Cube(@x int) RETURNS INT
AS EXTERNAL NAME
TestUDF.[MyNamespace.TestUdf].Cube
SELECT dbo.Cube()
22
XML
23
XML in un Database Relazionale?
E’ lo standard de facto
Dati trasmessi e ricevuti come XML
Sempre più utilizzato
I database prima o poi devono cominciare a fare i
conti con questa realtà
24
Utilizzato come Lingua Franca
Allora meglio farlo nel modo migliore
XML in un Database Relazionale
CREATE TABLE xml_tab (
the_id INTEGER,
xml_col XML)
CREATE PROCEDURE transform (
@x XML,
@y XML OUTPUT)
AS
...
CREATE FUNCTION simple (
@x NVARCHAR(max))
RETURNS XML
AS
DECLARE @a XML
SET @a = @x
...
RETURN @a
25
XML in un Database Relazionale
Supporto per
Memorizzazione interna
26
XML Schema Validations
XML Indexes
XQuery & XPath 2.0
Casting
come BLOB
Rappresentazione interna binaria (compressa)
XML encoding trasformato in UTF-16
XML in un Database Relazionale
CREATE TABLE xml_tab (
the_id INTEGER,
xml_col XML)
GO
-- auto conversion
INSERT INTO xml_tab VALUES(1, '<doc/>')
INSERT INTO xml_tab VALUES(2, N'<doc/>')
SELECT CAST(xml_col AS VARCHAR(MAX))
FROM xml_tab WHERE the_id < 10
-- fails, not well formed
INSERT INTO xml_tab
VALUES(3, '<doc><x1><x2></x1></x2></doc>')
27
Typed & Untyped XML
E’ possibile fare in modo che il tipo XML sia
validato da un XML Schema
Per validare i dati inseriti
Per assicurarsi che tutte le entità abbiano la stessa
struttura
28
Definizione dei tipi di dati utilizzati
XML Indexes
Ottimizzano le query sulle colonne XML
Due tipi
Primary
Secondary
Necessaria la presenza di un indice cluster sulla
primary key della tabella
CREATE TABLE xml_tab (
id integer primary key,
doc xml)
GO
CREATE PRIMARY XML INDEX xml_idx on xml_tab (doc)
GO
29
XQuery
XQuery è l’evoluzione di XPath
Supporto di un subset di XQuery
implementazione basata sul draft Novembre 2003
http://www.w3.org/TR/xquery
Permette di poter fare query su dati
semistrutturati e/o destrutturati
30
Più correttamente è un SuperSet
XML
xml.value()
-- insert some rows
INSERT xml_tab
VALUES('<people><person name=“alessandro"/></people>')
INSERT xml_tab
VALUES('<people><person name=“davide"/></people>')
INSERT xml_tab
VALUES('<people><person name=“franco"/></people>')
-- this query
SELECT id,
xml_col.value('/people/person/@name','varchar(50)') AS name
FROM xml_tab
-- yields this resultset
id
name
-------------------------1
alessandro
2
davide
3
franco
31
Web Services
32
Web Services
Architettura per ottenere interoperatività tra
sistemi (anche eterogenei)
Stanno diventando il modello di integrazione de
facto
33
XML come supporto
protocolli standard
numerose specifiche per soddisfare le varie esigenze
supportati da tutti i linguaggi e da tutte le piattaforme
Web Services e SQL Server
Solo TDS a volte può essere limitante per i client
necessita di librerie apposite
Web Services
34
ADO.NET
OLEDB / ODBC
JDBC
FreeTDS
HTTP/XML: tutti i client li supportano
Web Services e SQL Server
Necessità non nuova
Meglio far si che sia direttamente SQL a mettere
a disposizione l’infrastruttura
35
Con Sql 2000: SQLXML
meno strati
più integrata
più sicura
più veloce
Web Services e SQL Server
36
Web Services e SQL Server
Utilizzo dell’HTTP Kernel Protocol Stack
Necessario Windows Server 2003 (o XP SP2)
Supporto per SSL
Funzionamento senza necessità di utilizzare IIS
37
Typical web service configuration
CREATE ENDPOINT Accounting
STATE = STARTED
AS HTTP (
SITE = 'www.account.com', PATH = '/nwind',
AUTHENTICATION = (INTEGRATED), PORTS = (CLEAR),
RESTRICT_IP = NONE,
EXCEPT_IP = (13.24.15.16, 12.24.44.5)
)
FOR SOAP (
WEBMETHOD 'http://tempUri.org/'.'GetCustomerInfo'
(name='Northwind.dbo.GetCustInfo',
schema=STANDARD ),
WSDL = DEFAULT,
BATCHES = ENABLED,
DATABASE = 'northwind',
NAMESPACE = 'http://Northwind/Customers'
)
GO
38
Service Broker
39
Cos’è il Service Broker?
Piattaforma per la creazione di applicazioni
asincrone basate sull’uso di messaggi
Facilita lo sviluppo di applicazioni Loosely Coupled
Completamente gestito tramite TSQL
Basato sul concetto di coda
40
Cos’è il Service Broker?
Affidabile
Transazionale
41
Garantisce l’invio e la ricezione dei messaggi
“Exactly once” message processing
Utilizzabile su più instanze di Sql Server
Service Broker Elements
42
Messages
Contracts
Queues
Services
Integration Services
43
Integration Services
Successore dei DTS
COMPLETAMENTE riscritto
Bastato sul .NET Framwork
MOLTO MOLTO più potente e flessibile
44
Integration Services
BI Development Studio
Praticamente è Visual Studio
Designer molto più ordinato tramite l’utilizzo di
aree “tematiche”
Supporto per sistemi di gestione del codice
45
Visual SourceSafe
Migliorate le capacità di debugging
Integration Services
Molti elementi permettono l’utilizzo di un
“Linguaggio” interno: DTS Expressions
Possibilità di creare workflow molto complessi
Possibilità di gestire gli eventi (es. OnError)
Programmabili ed estendibili con .NET
46
Reporting Services
47
Overview
MS Reporting Services (SSRS) è una piattaforma per la
creazione e la gestione di report
E’ basato su tecnologie standard
HTTP, XML e Web Services
.NET
SQL Server
Fornisce tool per:
Per applicazioni connesse
48
sviluppo
amministrazione
consultazione
E’ completamente estendibile e personalizzabile
Features principali
Sorgenti dati
Report
49
Relazionali
Multidimensionali
Xml
Tabulari
A Matrice (Pivot)
Free-form
Features principali
Report Interattivi
Report Parametrici
Supporto per query dinamiche
Navigabilità
50
Drill through
Anchor
Treeview
Calendar
Features principali
Elementi Grafici
Aggregazione dei dati
Totali / Subtotali / Avg
Render multiformato
51
Immagini
Charts
Html / PDF / Excel
Printer
Features principali
Rich Client Printing
Stampa senza necessità di
esportare
Download di un controllo
ActiveX sul client
Supporto per
52
Page Layout
Preview
Features principali
Configurazione tramite tool
53
Report Service Configuration Manager
Domande ?
54
© 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.