La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sql Server 2005 La Piattaforma Applicativa Davide Mauri Factory Software

Presentazioni simili


Presentazione sul tema: "Sql Server 2005 La Piattaforma Applicativa Davide Mauri Factory Software"— Transcript della presentazione:

1 Sql Server 2005 La Piattaforma Applicativa Davide Mauri Factory Software

2 2 Agenda T-SQL Ranking / Top n CTE Pivot / Unpivot Try … Catch Encryption XML Xml data type XQuery Full Text Search

3 3 Agenda Integration Services Data e Control Flow Connections Task Transformations Reporting Services Report Manager Sviluppo dei report con Visual Studio Report Builder

4 4 T-SQL

5 5 FUNZIONI di RANKING RANK DENSE_RANK NTILE ROW_NUMBER

6 6 RANK Ritona il posizionamento di ogni riga allinterno di una partizione PARTITION BY definisce il criterio di partizionamento ORDER BY stabilisce lordine in cui viene appicato il rank alle righe Sintassi: SELECT select_list, RANK() OVER (PARTITION BY col1 ORDER BY col2) as rank FROM Tabella1

7 7 RANK RANK = 1 + numero di rank che precedono la riga Se due o più righe sono alla pari, ricevono lo stesso rank I rank potrebbero non essere numeri consecutivi

8 8 DENSE_RANK RANK = 1 + numero di DISTINCT rank che precedono la riga Se due o più righe sono alla pari, ricevono lo stesso rank Non vi sono gap nei rank SELECT select_list, DENSE_RANK() OVER (PARTITION BY col1 ORDER BY col2) as rank FROM Tabella1

9 9 NTILE Distribuisce le righe di una partizione ordinata in uno specificato numero di gruppi Se il numero di righe non è divisibile per il numero di gruppi I gruppi avranno ampiezza differente Prima compariranno i gruppi con più elementi SELECT select_list, NTILE(nr_gruppi) OVER (PARTITION BY col1 ORDER BY col2) as rank FROM Tabella1

10 10 ROW_NUMBER Ritorna il numero sequenziale di una riga allinterno di una partizione ordinata SELECT select_list, ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2) as rank FROM Tabella1

11 11 TOP Specifica che solo la prima parte di un result set verrà ritornata PERCENT WITH TIES (+ order by)

12 12 COMMON TABLE EXPRESSION (CTE) Result set temporaneo Non è salvato come oggetto Rimane in vita solo per la durata della query che lo ospita Migliora la leggibilità e la manutenibilità delle query

13 13 CTE: Utilizzo Query ricorsive Anchor Member e Recursive Member Quert hint: option (maxrecursion n) Sostituto delle view (quando non serve salvare i metadati) Referenziare lo stesso result set più volte nella query

14 14 CTE: Sintassi Struttura della CTE: WITH nome_cte [(nome colonna,…)] AS (query che definisce la CTE) Utilizzo: SELECT * FROM nome_cte

15 15 PIVOT Ruota unespressione tabellare trasformando i valori univoci di una colonna nelle colonne dellespressione di output Effettua le aggregazioni che costituiscono loutput SELECT VendorID, [164] AS Emp1, [198] AS Emp2, [223] AS Emp3, [231] AS Emp4 FROM ( SELECT PurchaseOrderID, EmployeeID, VendorID FROM Purchasing.PurchaseOrderHeader ) p PIVOT( COUNT (PurchaseOrderID) FOR EmployeeID IN ( [164], [198], [223], [231] )) AS pvt

16 16 UNPIVOT Effettua loperazione inversa rispetto a PIVOT Ruota le colonne in righe I valori nulli non possono essere usati SELECT VendorID, Employee, Orders FROM (SELECT VendorID, Emp1, Emp2, Emp3, Emp4 FROM pvt) p UNPIVOT (Orders FOR Employee IN (Emp1, Emp2, Emp3, Emp4, Emp5) )AS unpvt GO

17 17 Error handling Gestione simile al C# / VB.NET attraverso TRY e CATCH: Se si verifica un errore nel blocco TRY il controllo passa al blocco CATCH. Eseguito il blocco CATCH il controllo passa al codice che sta dopo END CATCH Blocco TRY Blocco CATCH Codice Successivo a END CATCH Exception Nessuna Exception

18 18 Sintassi di TRY...CATCH Sintassi: BEGIN TRY... END TRY BEGIN CATCH.... Gestione dellerrore..... END CATCH Il batch è unico!!!!

19 19 Try...catch TIPS Ogni TRY..CATCH deve essere contenuto in un unico BATCH, Stored Procedure, Trigger I blocchi TRY…CATCH possono essere nidificati Errori con severity <= 10 sono warning che non vengono intercettati dal blocco CATCH Errori con severity >= 20 che causano linterruzione della connessione: Non sono gestiti da TRY…CATCH Tuttavia finchè la connessione non è interrotta il blocco CATCH funziona.

20 20 Try...catch e XACT_STATE Nel blocco catch è bene controllare lo stato della transazione attraverso XACT_STATE() 1: Transazione attiva, la sessione può compiere qualsiasi azione (COMMIT o ROLLBACK) 0: Nessuna transazione attiva -1: Esiste una transazione aperta, ma NON può essere eseguito il COMMIT. BEGIN CATCH IF (XACT_STATE()) = -1 ROLLBACK TRANSACTION; IF (XACT_STATE()) = 1 COMMIT TRANSACTION; END CATCH

21 21 Informazioni sugli errori ERROR_MESSAGE() ERROR_NUMBER() ERROR_SEVERITY() ERROR_STATE() ERROR_PROCEDURE() ERROR_LINE() Ritornano informazioni solo allinterno di un blocco CATCH. Posso utilizzate una stored procedure per il logging

22 22 TRY...CATCH: tips Utilizzo di RAISERROR per il rethrow Intercetta: Deadlock errors Non intercetta: Errori di compilazione tipo syntax error Statement level recompilation errors (object name resolution errors)

23 23 ENCRYPTION Possibilità di criptare i valori tramite lutilizzo di EncryptKey DecryptKey Utilizzabili negli statement DML Solo chi è in possesso della chiave giusta potrà vedere il valore Gli altri vedranno NULL

24 24 XML

25 25 XML in un Database Relazionale? E lo standard de facto Utilizzato come Lingua Franca Dati trasmessi e ricevuti come XML Sempre più utilizzato I database prima o poi devono cominciare a fare i conti con questa realtà Allora meglio farlo nel modo migliore

26 26 XML in un Database Relazionale? XML può vivere allinterno del db in 3 modi 1. TEXT Come accade con Sql Server 2000 Si perdono le funzionalità intrinsche di XML

27 27 XML in un Database Relazionale? 2. RELATIONAL FORMAT Se possibile un documento può essere scomposto in tabelle Si sfruttano le capacità del motore relazionale Si ottiene tramite OPENXML o XMLBULKLOAD (SqlXml)

28 28 XML in un Database Relazionale? 3. XML Data Type Utilizzo di tutte le funzionalità di xml Supporto ricerche full-text Supporto validazione Utilizzabile in ogni situazione Colonne, Parametri, Variabili, Return Value Attenzione non abusarne Violazione della forma normale

29 29 XML in un Database Relazionale? Perchè dovrei?!?! Memorizzazione di documenti XML Memorizzazione di dati destrutturati Sistemi Integrati B2B (Business To Business)/B2C (Business To Consumer) A2A (Application To Application) Messaging (SOAP) Occhio a non sentirsi obbligati Ogni tanto la si cerca di usare solo perchè è nuova o perchè non si conoscono alternative

30 30 XML in un Database Relazionale Una colonna XML può memorizzare well-formed XML Fragments Documents

31 31 XML in un Database Relazionale Pieno supporto e gestione dellencoding -- This works correctly INSERT INTO xml_tab VALUES(4, ' ') -- This fails, encoding does not agree w/variable type INSERT INTO xml_tab VALUES(5, N' ')

32 32 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 Definizione dei tipi di dati utilizzati

33 33 Constrained XML E possibile anche utilizzare il vincolo CHECK Constrained XML CREATE TABLE docs ( pk INT PRIMARY KEY, xCol XML not null CONSTRAINT CK_name CHECK (xCol.exist('/book/author[first-name = last- name]') = 0) )

34 34 XML Schema Collections Gli XML Schema utilizzati devono essere nel database CREATE XML SCHEMA COLLECTION Il nome verrà utilizzato nellassociazione con il tipo di dato Lo schema deve essere inserito come literal

35 35 XML Schema Collections CREATE XML SCHEMA COLLECTION geocoll '... ' literal schema targetNamespace CREATE TABLE Locations ( location xml(geocoll)... ) reference to schema collection Memorizzazione nella tabelle di sistema sys.xml_schema_collections sys.xml_schema_namespaces

36 36 XML Schema Sample f or namespace urn:geo similar to sql type, structured type, i.e. a tree element that might appear in xml data

37 37 Utilizzo di Typed XML CREATE TABLE point_tab( id int IDENTITY primary key, -- geocoll include schema for 'urn:geo' namespace thepoint xml(CONTENT, geocoll) GO -- this works, schema-valid Point INSERT INTO point_tab VALUES( ' ') -- this insert fails, value foo is not a dim (integer) INSERT INTO point_tab VALUES( ' 10 foo ')

38 38 XML Schema Collections L XML schema non è realmente memorizzato nel database Il contenuto è scomposto e memorizzato in tabelle di sistema Solo le imformazioni fondamentali vengono memorizzate Informazioni non memorizzate Comments, Processing Instructions

39 39 XML Schema Collections Ottenere lo schema memorizzato sys_schema_namespace(…, …) Non è lo schema orginale Ma è Functionally Equivalent select xml_schema_namespace(Ndbo, Ngeocollection)

40 40 FOR XML Risultato memorizzabile in una varibile Tramite la keywork TYPE Nuova keywork PATH per effettuare lo shaping dellXML Più semplice da usare che EXPLICIT xml = SELECT * FROM authors FOR XML AUTO, TYPE

41 41 FOR XML SELECT au_id as au_fname as [name/firstname], au_lname as [name/lastname] FROM authors FOR XML PATH Bob Smith...

42 42 XML BULK LOAD I dati XML possono essere popolati tramite BULK LOAD

43 43 XQuery XQuery è levoluzione di XPath Più correttamente è un SuperSet Supporto di un subset di XQuery implementazione basata con il draft Novembre Permette di poter fare query su dati semistrutturati e/o destrutturati XML

44 44 XQuery XQuery fatta da FLWOR Expressions: FOR LET (not supported) WHERE ORDER BY RETURN Può lavorare direttamente sull XML Data Type sia come variabile sia come colonna

45 45 XQuery Possibilità di utilizzare sia query XPath che FLWOR (: this is a valid XQuery :) /people/person[age > 30] (: so is this FLWOR expression :) for $p in /people/person where $p/age > 30 order by $p/age[1] return $p/name

46 46 XQuery -- returns moe in record number x -- where x is the ID column, or blank column SELECT xml_col.query(' for $b in //person where return { } in record number {sql:column("xml_tab.id")} ') FROM xml_tab -- returns moe is a stooge VARCHAR(50) = ' is a singer' SELECT xml_col.query(' for $b in //person where return { } } ') FROM xml_tab

47 47 XQuery & Xml Data Type Xml Data Type Functions exist() value() query() nodes() modify() SELECT xmlCol.query(/Root/ProdDesc/*) FROM myTable

48 48 xml.exist() xml.exist usa XML type and XQuery expression false se la query restituisce NULL true negli altri casi Può essere utilizzato in constraint di tipo CHECK

49 49 xml.exist() -- pdoc must have a person element -- as a child of the people root CREATE TABLE xmltab( id INTEGER PRIMARY KEY, pdoc XML CHECK (pdoc.exist('/people/person')=1) ) -- ok insert xmltab values( 1, ' ') -- fails, no persons insert xmlpeople values( 2, ' ') Supporto per DEFAULT

50 50 xml.value() xml.value restituisce un tipo di dato nativo SQL Server e scalar input: XQuery, SQL Type restituisce un tipo scalare o NULL non può restituire un tipo XML Utilizzo predicati (es. WHERE Clause) result values views

51 51 xml.value() -- insert some rows INSERT xml_tab VALUES(' ') INSERT xml_tab VALUES(' ') INSERT xml_tab VALUES(' ') -- this query SELECT id, AS name FROM xml_tab -- yields this resultset id name alessandro 2 davide 3 franco

52 52 xml.query() xml.query resituisce un XML data type input: XQuery lxml risultante può essere un XML Fragment può costruire nuovi elementi Soda Ice Colonna Invoice, Tabella Invoices SELECT invoice.query('Invoice/LineItem') FROM Invoices Soda Ice

53 53 xml.nodes() scompone il contenuto di un XML data type simile (concettualmente) a value(), ma produce dei nodi, non un valore scalare il risultato è un rowset il risultato può essere application al comando T-SQL CROSS APPLY si ottengono funzionalità simili ad OPENXML performance migliori

54 54 xml.nodes() --input xml in alessandro davide franco -- this query SELECT... T(rows) -- yields this resultset id name alessandro 1 davide 2 franco

55 55 Using Relational Data in XQuery SQL Server XQuery può utilizzare sia dati XML che dati relazionali sql:variable: accesso a variabili T-SQL sql:column: accesso a columns value limitatamente alla riga in uso

56 56 Using Relational Data With XML -- returns moe in record number x -- where x is the ID column, or blank column SELECT xml_col.query(' for $b in //person where return { } in record number {sql:column("xml_tab.id")} ') FROM xml_tab -- returns moe is a stooge VARCHAR(50) = ' is a stooge' SELECT xml_col.query(' for $b in //person where return { } } ') FROM xml_tab

57 57 XQuery DML

58 58 XQuery DML xml.modify permette la modifica di XML XQuery non ha standard DML vengono utilizzati gli standard proposti insert, delete, replace operators allinterno di espressioni XQuery insert before or after element first or last sibling subelements and attributes must be a single node replace elements or attributes solo simple types value-of" clause per aggiornare i valori

59 59 XQuery DML - Original Document xml = ' 1000 Jane Smith Chicken Patties Vanilla Ice Cream 1.50 '

60 60 XQuery DML - Using xml.modify -- use modify to insert a subelement 'insert into /Invoice[1] ') -- or insert an attribute attribute status{"backorder"} into /Invoice[1] ') -- this deletes all LineItem elements /Invoice/LineItems/LineItem') -- change the value of the CustomerName element value of /Invoice[1]/CustomerName[1]/text()[1] with "John Smith" ')

61 61 XML filter Index e query su istanze XML Analisi sul contenuto di un token I tag (attributi inclusi) sono rimossi Sintassi come per le altre colonne CREATE FULLTEXT INDEX ON docs (xDoc) XML Full Text Search

62 62 Può essere combinata con XQuery Full-text search come filtro, poi XQuery search SELECT R.X.query FROM (SELECT * FROM docs WHERE contains (xDoc, 'Wrd1 Wrd2')) R(X) Supporta lattributo xml:lang Utilizza correttamente il linguaggio SELECT * FROM docs WHERE contains (xDoc, 'Visionen', LANGUAGE 'German') XML Full Text Search

63 63 Integration Services

64 64 Architettura ed Object Model Separazione dei package in due aree Control Flow Data Flow Modello ad oggetti facilmente estendibile basato sul.NET Framework Non limitato ai soli Custom Task

65 65 Architettura ed Object Model Supporto per sorgenti e destinazioni multiple Supporto nativo XML, SQL CE 2005, AS 2005 come sorgenti/destinazione dati Introduzione delle DTS Expression Una sorta di linguaggio interno Vagamente simile a C#

66 66 Ambiente di sviluppo BI Development Studio Praticamente è Visual Studio Designer molto più ordinato tramite lutilizzo di aree tematiche Supporto per sistemi di gestione del codice Visual SourceSafe Migliorate le capacità di debugging

67 67 Package Elements Numerosi nuovi task Data Flow Data Preparation Workflow Sql Server Scripting Analisys Server Maintenance Aggiunto il supporto per i Containers Loop, For Each, Sequence, ecc…

68 68 Tools Wizard per: Configurazione dei Package Deployment e Update Migrazione dai DTS di SQL Server 2000 DTExecUI e DTExec Esecuzione dal prompt DTUtil Gestione dal prompt (copy, crypt, sign…)

69 69 Package Management E possibile utilizzare dei Folder per fare ordine Logging non limitato alle trasformazioni Supporto nativo per la configurazione del package senza necessità di utilizzo dellambiente di editing Package Checkpointing

70 70 Sviluppo Molti elementi permettono lutilizzo di un Linguaggio interno: DTS Expressions Possibilità di creare workflow molto complessi Possibilità di gestire gli eventi (es. OnError) Programmabili ed estendibili con.NET

71 71 Packages

72 72 Package Content Un Package può contenere: Control Flow Task Container Data Flow Trasformations Connections Configurations Variables

73 73 Operational Surfaces Control Flow Data Flow Event Handlers Package Explorer Execution Results Connection Managers Properties

74 74 Control Flow Descrive lintero processo definito dal Package Organizza i task e specifica percorsi e/o precedenze Il workflow è basato sul risultato di unespressione DTS Praticamente nessun limite alla fantasia!

75 75 Data Flow Descrive il flusso dei dati (Pipeline) Specifica dettagliatamente tutto ciò che riguarda la manipolazione dei dati E un task del Control Flow SourceTransformDestination

76 76 Connection Managers Le connessioni visualizzate in uno spazio dedicato Non solamente dedicate ai database Es. SMTP Connection Manager, FTP Connection Manager Condivise sia dagli elementi del Control Flow che del Data Flow

77 77 Control Flow Elements Tre diversi tipi di Container: Possibilità di effettuare dei loop: For Loop ForEach Loop Raggruppamento di task Sequence

78 78 Control Flow Elements Numerosi nuovi task che evitano la scrittura di codice Data Flow Task Per la definizione dettagliata dei processi di ETL File System Task Per la gestione dei file e delle directory (Create, Copy, Move, Delete, Rename, Set Attributes)

79 79 Control Flow Elements Script Task Esecuzione di script scritti in VB.NET Editor *finalmente* evoluto Send Mail Task Supporto SMTP (Era Ora! ) FTP Task Supporto per tutte le operazione non solo il GET

80 80 Control Flow Elements WMI Data Reader Task Per ottenere informazioni da WMI WMI Event Watcher Task Per monitorare i dati di WMI e rispondere ai cambiamenti XML Task Per operare su documenti XML (XSLT, Merge, Patch, Diff, Validate, XPath)

81 81 Data Flow Elements Conditional Split Transform Per processare una riga secondo diversi criteri Multicast Transform Permette di processare una riga più volte e con diversi meccanismi Union All Transform Prende più input e di generare un solo output

82 82 Data Flow Elements Sort Transformation Per ordinare le righe Count Rows Transformation Per contare le righe Derived Column Per modificare o creare colonne

83 83 Data Flow Elements Fuzzy Grouping Pulisce e standardizza i dati (Es. Rimuove i duplicati) Fuzzy Lookup Pulisce ulteriormente i dati (Es. Standardizzazione, Correzione ed inserimento valori mancanti) Percentage Sampling Crea dati di prova

84 84 Data Viewers Attivi durante il debug Permettono di interrompere lesecuzione di un Data Flow visualizzare i dati E possibile vedere anche la distribuzione dei dati con lausilio di grafici

85 85 Reporting Services

86 86 Reporting Services Editor Report: BI Dev. Studio Non è obbligatorio in quanto il report è un file xml Però è praticamente indispensabile Creare un progetto di tipo Report Project Aggiungere: Data Sources Parametri Reports

87 87 Reporting Services Ogni proprietà visibile (e non) può essere modificata tramite luso di expressions Il linguaggio è VB.NET In più ci sono funzioni aggiunte dallinfrastruttura di SSRS Previous RowNumber CountRows

88 88 Sviluppo E possibile aggiungere funzioni tramite Codice Embedded (VB.NET) External Assembly (Qualsiasi linguaggio.NET) Per personalizzare il report è possibile utilizzare immagini Memorizzate nel report (embedded) Esterne (link) Memorizzata in un db

89 89 Reporting Services Il Report Manager è solamente lapplicazione di default fornita da Microsoft Utilizza il web service per visualizzare i metadati e gestire i report I report vengono visualizzati in un IFRAME E sono chiamati tramite URL

90 90 Reporting Services E possibile integrare SSRS in qualsiasi applicazione tramite Chiamate SOAP (Web Services) Chiamate via URL E possibile integrare il tutto con SharePoint Web part disponibile dalla SP2 dei vecchi RS

91 91 Reporting Services Creazione di report ad-hoc Tramite il Report Builder Non cè un liberta totale I report possono essere creati sulla base di un Report Model Il Report Model contiene i metadati disponibili Più che sufficiente nel 99% dei casi Il Report Model si crea da Visual Studio

92 92 Reporting Services

93 93 Invocazione di Report E possibile accedere a Reporting Services in una soluzione custom in due modalita: Url access richiesta via HTTP/GET Web Services Richiesta via SOAP

94 94 Invocazione di Report

95 95 Invocazione di Report Url Access Report Server URL Defaults to Report Name Nome del report Report Parameters I nomi devono mappare I parametri definiti nel report Es CategoryID=1&EmployeeID=1

96 96 Invocazione di Report Web Services Esecuzione dei report GetReportParameters() Render() Anche asincrona Gestione report CreateReport() GetReportDefinition()

97 97 Distribuzione dei report I report possono essere visualizzati Da web, tramite il Report Manager Da applicazioni ad hoc, o integrati in applicazioni esistenti …ma possono anche essere loro ad andare dallinteressato Via mail Via network share Questa funzionalità prendere il nome di Subscription

98 98 Distribuzione dei report Le subscription vengono eseguite in base ad una schedulazione Ad hoc Condivisa La schedulazione fa affidamento sul SQL Server Agent Quindi deve essere attivo! Vengono creati dei Job ad hoc

99 99 Distribuzione dei report Distribuzione tramite network share

100 100 Distribuzione dei report Distribuzione via

101 101 Distribuzione dei report Le sottoscrizioni guidate (Data-Driven subscription) permettono di impostare a runtime Destinatari Parametri Formati I dati vengono prelevati tramite query ad hoc La sorgente dati, come al solito, può essere qualsiasi cosa (SQL Server, Oracle, OLEDB, ODBC)

102 102 Domande ?

103 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Scaricare ppt "Sql Server 2005 La Piattaforma Applicativa Davide Mauri Factory Software"

Presentazioni simili


Annunci Google