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.