Condividi tramite


Miglioramenti della programmabilità del Motore di database

Microsoft SQL Server 2005 include molte funzionalità nuove e migliorate di Motore di database per aumentare la produttività e l'efficienza dei programmatori. È possibile scrivere oggetti di database in linguaggi basati su Microsoft .NET Framework come Microsoft Visual C#. Le attività di sviluppo e debug sono integrate nell'ambiente Microsoft Visual Studio per consentire agli sviluppatori di utilizzare gli stessi strumenti per sviluppare oggetti di database e componenti e servizi basati su .NET Framework. Il linguaggio Transact-SQL è stato esteso con funzionalità quali una migliore gestione degli errori e il supporto delle query ricorsive.

Inoltre, le interfacce di accesso ai dati utilizzate dalle applicazioni per accedere alle istanze di Motore di database sono state modificate per aumentare la produttività dei programmatori. Per ulteriori informazioni, vedere Miglioramenti alle interfacce di accesso ai dati.

Di seguito sono descritti i principali migioramenti apportati al linguaggio Transact-SQL. Per ulteriori informazioni sulle nuove funzionalità Transact-SQL, vedere Novità e miglioramenti di Transact-SQL (Transact-SQL).

Miglioramenti della programmabilità

Microsoft .NET Framework: integrazione di Common Language Runtime

Il linguaggio CLR (Common Language Runtime) di Microsoft .NET Framework è ora ospitato in Motore di database di SQL Server. Questo ambiente di integrazione di CLR supporta oggetti di database procedurali, quali funzioni, stored procedure e trigger, scritti in linguaggi basato su .NET Framework come Microsoft Visual C# e Visual Basic .NET. I linguaggi basati su .NET Framework supportano logica e funzionalità non disponibili nel linguaggio Transact-SQL, pertanto offrono una logica più complessa che può ora essere incorporata in oggetti di database. È inoltre possibile scrivere tipi e funzioni di aggregazione definiti dall'utente in linguaggi basati su .NET Framework per creare tipi di dati più complessi rispetto alle versioni precedenti di SQL Server.

L'ambiente di programmazione integrato di CLR fa parte dell'ambiente di sviluppo di Visual Studio. Gli sviluppatori possono utilizzare gli stessi strumenti per creare ed eseguire il debug degli oggetti di database e per sviluppare componenti e servizi .NET client o di livello intermedio.

Per ulteriori informazioni, vedere Introduction to Common Language Runtime (CLR) Integration.

Microsoft .NET Framework: funzioni di aggregazione definite dall'utente

Le funzioni di aggregazione definite dall'utente scritte in un linguaggio basato su .NET Framework estendono le funzioni di aggregazione di base, come SUM, MIN e MAX, disponibili in Transact-SQL. Una funzione di aggregazione è una funzione che elabora diversi valori di dati e restituisce un unico valore. Anziché recuperare un intero set di risultati per un'applicazione ed eseguire una logica di aggregazione complessa nell'applicazione, una funzione di aggregazione .NET Framework può eseguire la logica nell'istanza di Motore di database e restituire solo il valore finale all'applicazione.

Per ulteriori informazioni, vedere CLR User-Defined Aggregates.

Microsoft .NET Framework: tipi definiti dall'utente

I tipi CLR definiti dall'utente (UDT) consentono di implementare tipi di dati del database in qualsiasi linguaggio supportato da CLR .NET Framework. I tipi CLR definiti dall'utente vengono implementati come classi in un linguaggio basato su .NET Framework e possono disporre di strutture complesse e di un comportamento definito dai campi, dai metodi e dalle proprietà della classe. I tipi CLR definiti dall'utente sono integrati con il sistema di tipi di Motore di database e possono essere utilizzati in tutti i contesti in cui vengono utilizzati i tipi incorporati.

Per ulteriori informazioni, vedere CLR User-Defined Types.

Microsoft .NET Framework: stored procedure, trigger e funzioni definite dall'utente

Gli oggetti di database procedurali possono essere scritti in linguaggi basati su .NET Framework per incorporare una logica più complessa rispetto a quella supportata dal linguaggio Transact-SQL. I programmatori possono sviluppare gli oggetti utilizzando lo stesso linguaggio e ambiente di sviluppo utilizzati per sviluppare componenti e servizi .NET Framework.

Per ulteriori informazioni, vedere CLR Stored Procedures, CLR Triggers, CLR User-Defined Functions.

Accesso Web: accesso SOAP HTTP nativo

È possibile configurare le istanze di Motore di database con endpoint o indirizzi HTTP a cui è possibile inviare richieste SOAP da applicazioni. I pacchetti vengono ricevuti direttamente dall'istanza di Motore di database senza che sia necessario configurare un servizio di livello intermedio come un server Microsoft Internet Information Services (IIS).

Per ulteriori informazioni, vedere Utilizzo dei servizi Web XML nativi in SQL Server 2005.

Miglioramenti a Transact-SQL: nuovo tipo di dati xml

In Motore di database è stato introdotto un nuovo tipo di dati xml che supporta l'archiviazione di documenti e frammenti XML nei database. Le istanze XML possono essere archiviate in colonne, parametri di stored procedure o variabili create con il tipo xml.

Per ulteriori informazioni, vedere Tipo di dati XML.

Miglioramenti di Transact-SQL: istruzioni XML FOR

È possibile nidificare le istruzioni FOR XML in modo da creare una gerarchia di documenti XML. I risultati di un'istruzione FOR XML possono essere archiviati in una colonna, un parametro di stored procedure o una variabile definita con il nuovo tipo di dati xml.

Per ulteriori informazioni, vedere Nuove funzionalità FOR XML.

Miglioramenti a Transact-SQL: migliore gestione degli errori

I programmatori che creano batch Transact-SQL, stored procedure, trigger e funzioni definite dall'utente possono utilizzare la comune logica TRY-CATCH per individuare e gestire le condizioni di errore.

Per ulteriori informazioni, vedere Gestione degli errori del Motore di database.

Miglioramenti a Transact-SQL: nuove viste dei metadati

In Motore di database di SQL Server 2005 sono disponibili due nuovi insiemi di viste per l'esecuzione di query nei metadati. Le viste del catalogo di sistema includono informazioni sugli oggetti, ad esempio le tabelle, le stored procedure e i vincoli, definiti nei database di SQL Server. Le viste a gestione dinamica offrono informazioni sullo stato corrente di un'istanza di Motore di database. Queste viste espongono informazioni presenti in strutture di memoria e non archiviate su disco, ad esempio informazioni sui blocchi, i thread e le attività.

Per ulteriori informazioni, vedere Esecuzione di query nel catalogo di sistema di SQL Server.

Miglioramenti a Transact-SQL: funzioni di rango

In Motore di database è disponibile una nuova categoria di funzioni denominate funzioni di rango. Questa categoria è composta dalle funzioni seguenti:

  • RANK
  • DENSE_RANK
  • NTILE
  • ROW_NUMBER

Queste funzioni restituiscono un valore di rango per ogni riga di una partizione.

Per ulteriori informazioni e un elenco di queste funzioni, vedere Funzioni di rango (Transact-SQL).

Miglioramenti a Transact-SQL: trigger DDL (Data Definition Language)

Oltre a supportare i trigger generati dalle istruzioni del linguaggio di manipolazione dei dati (DML, Data Manipulation Language) che modificano i dati (INSERT, UPDATE e DELETE), Motore di database include una nuova classe di trigger generati da istruzioni DDL che modificano gli oggetti di database, ad esempio le istruzioni che iniziano con CREATE, ALTER o DROP. I trigger DDL possono essere utilizzati per controllare o regolare le modifiche apportate allo schema di un database.

Per ulteriori informazioni, vedere Trigger DDL.

Miglioramenti a Transact-SQL: notifiche di eventi

In Motore di database è possibile programmare un nuovo tipo di oggetto: le notifiche degli eventi. Le notifiche degli eventi inviano informazioni sulle istruzioni DDL Transact-SQL e sugli eventi di Traccia SQL a un servizio di Service Broker. Possono essere utilizzate per registrare e controllare le modifiche o le attività relative al database. Vengono eseguite in modo asincrono e possono offrire un'alternativa di programmazione ai trigger DML e DDL e a Traccia SQL.

Per ulteriori informazioni, vedere Implementazione di notifiche degli eventi.

Miglioramenti a Transact-SQL: estensioni di elaborazione delle code

Tre funzionalità Transact-SQL migliorate consentono di semplificare la generazione di applicazioni di accodamento di messaggi in sistemi di automazione a regime di controllo libero, affidabili, di tipo Internet e per processi aziendali. Le istruzioni INSERT, UPDATE e DELETE supportano ora una clausola OUTPUT che restituisce dati in base alle righe modificate dall'istruzione. READPAST può ora essere specificato per istruzioni UPDATE e DELETE, per ignorare le righe della coda acquisite da altre attività e passare alla prima riga disponibile di una coda.

Per ulteriori informazioni, vedere Clausola OUTPUT (Transact-SQL) e Hint di blocco.

Miglioramenti a Transact-SQL: modello di programmazione LOB unificato

Nelle versioni precedenti di SQL Server, le stringhe di grandi dimensioni superiori agli 8.000 byte devono essere memorizzate nei tipi di dati text, ntext e image, appartenenti a un modello di programmazione diverso rispetto ai tipi di dati per stringhe più brevi, ovvero char, nchar, varchar, nvarchar, binary e varbinary. Motore di database supporta ora una specifica di lunghezza MAX per i tipi di dati più brevi. Quando si specifica MAX, i tipi di dati possono memorizzare con le stesse dimensioni stringhe come valori text, ntext e image fino a 2 gigabyte (GB), che verranno elaborate in modo identico alle stringhe più brevi.

Per ulteriori informazioni, vedere Utilizzo di tipi di dati per valori di grandi dimensioni.

Miglioramenti a Transact-SQL: query ricorsive

Un'espressione di tabella comune è un set di risultati memorizzato temporaneamente durante l'esecuzione di un'istruzione SELECT, INSERT, UPDATE o DELETE. L'utilizzo di un'espressione di tabella comune consente l'uso di query ricorsive e può semplificare la logica sostituendo le tabelle o le viste temporanee.

Per ulteriori informazioni, vedere Utilizzo delle espressioni di tabella comuni.

Miglioramenti a Transact-SQL: nuovo operatore APPLY

L'operatore APPLY supporta la chiamata di un'espressione valutata a livello di tabella, ovvero una funzione o subquery valutata a livello di tabella, per ogni riga restituita da un riferimento a una tabella esterna. L'espressione valutata a livello di tabella viene valutata per ogni riga del riferimento alla tabella esterna.

Per ulteriori informazioni, vedere Utilizzo di APPLY.

Miglioramenti a Transact-SQL: nuovi operatori PIVOT e UNPIVOT

I nuovi operatori PIVOT e UNPIVOT consentono di ruotare i set di risultati in modo che le colonne diventino righe e le righe colonne. Questa operazione veine denominata rotazione dei dati o creazione di report a campi incrociati. Queste operazioni sono possibili anche nelle versioni precedenti di SQL Server, ma richiedono una logica complessa che è stata semplificata con gli operatori PIVOT e UNPIVOT.

Per ulteriori informazioni, vedere Utilizzo di PIVOT e UNPIVOT.

Miglioramenti a Transact-SQL: notifiche di query

Le notifiche delle query consentono a un'applicazione di memorizzare nella cache un set di risultati e richiedere a Motore di database di inviare una notifica quando i dati sottostanti vengono modificati da un'altra applicazione. Le applicazioni che utilizzano le notifiche delle query non devono verificare periodicamente lo stato dei dati nel database. Devono semplicemente convalidare i dati se Motore di database invia una notifica di modifica.

Per ulteriori informazioni, vedere Utilizzo della notifica delle query.

Miglioramenti a Transact-SQL: operazioni di massa su OPENROWSET

OPENROWSET supporta ora l'operazione BULK per copiare in massa i dati da file di dati. Le operazioni di massa di OPENROWSET vengono controllate tramite nuovi hint di tabella e opzioni specifiche, quali BULK_BATCHSIZE e FORMATFILE. La nuova clausola bulk_column_alias supporta l'assegnazione di nomi di colonna ai dati di operazioni di massa.

Per ulteriori informazioni, vedere OPENROWSET (Transact-SQL) e table_hint (Transact-SQL).

Miglioramenti a Transact-SQL: operatore TOP

L'operatore TOP è stato migliorato e accetta ora qualsiasi espressione numerica, ad esempio un nome di variabile, anziché accettare esclusivamente un numero intero, per specificare il numero di righe restituite. È inoltre possibile specificare l'operatore TOP in istruzioni INSERT, UPDATE e DELETE.

Per ulteriori informazioni, vedere TOP (Transact-SQL).

Miglioramenti a Transact-SQL: query distribuite

L'istruzione EXECUTE supporta ora una clausola AT LinkedServer che specifica l'esecuzione di una stored procedure su un server collegato. Il predicato full-text CONTAINS supporta nomi in quattro parti per eseguire query su server collegati. Le query distribuite supportano inoltre i nuovi tipi di dati LOB (Large Object) nvarchar(max), varchar(max) e varbinary(max). Sono stati aggiunti nuovi eventi di Traccia SQL per agevolare l'analisi dell'interazione tra le query distribuite e i provider OLE DB.

Per ulteriori informazioni, vedere EXECUTE (Transact-SQL), CONTAINS (Transact-SQL), Mapping dei tipi di dati con le query distribuite e Categoria di eventi OLEDB.

Miglioramenti di Transact-SQL: TABLESAMPLE

La nuova clausola TABLESAMPLE limita il numero di righe elaborate da una query. A differenza di TOP, che restituisce solo le prime righe di un set di risultati, TABLESAMPLE restituisce le righe selezionate in tutto il set di righe elaborate dalla query.

Per ulteriori informazioni, vedere Limitazione dei set di risultati utilizzando TABLESAMPLE.

Miglioramenti di Transact-SQL: nuovi vincoli di integrità CASCADE

La clasuola REFERENCES supporta ora le operazioni di integrità referenziali di propagazione SET NULL e SET DEFAULT. SET NULL specifica che le operazioni di integrità referenziali di propagazione impostano le chiavi esterne su NULL. SET DEFAULT specifica che le chiavi esterne vengono impostate sul valore predefinito della colonna.

Per ulteriori informazioni, vedere Vincoli di integrità referenziale di propagazione.

Miglioramenti di Transact-SQL: i dati di overflow possono superare le dimensioni della pagina

Le righe possono superare il limite di 8.060 byte se contengono colonne a lunghezza variabile con i tipi di dati nvarchar, varchar, varbinary e sql_variant. Se le lunghezze combinate di queste colonne fanno in modo che la riga superi il limite di dimensione della pagina, Motore di database può spostare i dati dalle colone a lunghezza variabile a pagine distinte.

Per ulteriori informazioni, vedere Dati di overflow della riga che superano 8 KB.

Programmazione dell'amministrazione del database: nuova API di SMO (SQL Server Management Objects)

Il modello di oggetti SMO estende e sostituisce il modello di oggetti DMO (Distributed Management Objects). Il modello di oggetti SMO fornisce infatti classi per la configurazione e la gestione di istanze di Motore di database. Il modello di oggetti RMO (Replication Management Objects) completa il modello SMO, fornendo le classi per la configurazione e la gestione della replica.

Per ulteriori informazioni, vedere SQL Server Management Objects (SMO).

Programmazione dell'amministrazione del database: nuovi provider WMI di SQL Server

Il provider WMI per Gestione computer è un provider di istanze, che ha lo scopo di offrire un'unica interfaccia per le chiamate all'API che gestiscono le operazioni del Registro di sistema richieste dalle funzionalità dell'utilità di rete Server e Client e che consente di controllare e modificare maggiormente i servizi SQL selezionati dello snap-in Gestione computer.

Per ulteriori informazioni, vedere WMI Provider for Configuration Management.

Il provider WMI per eventi del server consente di utilizzare Strumentazione gestione Windows (WMI) per monitorare gli eventi in SQL Server. Questo provider converte SQL Server in un oggetto WMI gestito. Qualsiasi evento che può generare una notifica di evento in SQL Server può essere utilizzato da WMI mediante questo provider. Inoltre, come applicazione di gestione che interagisce con WMI, SQL Server Agent può rispondere a tali eventi, aumentando il numero di eventi coperti da SQL Server Agent rispetto alle versioni precedenti.

Per ulteriori informazioni, vedere WMI Provider for Server Events.

Vedere anche

Concetti

Miglioramenti del Motore di database

Guida in linea e informazioni

Assistenza su SQL Server 2005