Sql Server 2005
Davide Mauri
Factory Software
[email protected]
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.
Scarica

Sql Server 2005