Share via


Vantaggi dell'utilizzo di codice gestito per creare oggetti di database

Aggiornamento: novembre 2007

Per creare oggetti di database e recuperare e aggiornare dati per i database di Microsoft SQL Server 2005, è possibile utilizzare linguaggi .NET Framework oltre al linguaggio di programmazione Transact-SQL. Nei progetti Visual Basic, Visual C# o Visual C++ è possibile creare stored procedure, trigger, aggregati, funzioni definite dall'utente e tipi definiti dall'utente.

Nota:

Per impostazione predefinita, la funzionalità di integrazione di Common Language Runtime (CLR) è disattivata in Microsoft SQL Server e deve essere attivata per poter utilizzare gli elementi del progetto SQL Server. Per attivare la funzionalità di integrazione di CLR, utilizzare l'opzione clr enabled della stored procedure sp_configure. Per ulteriori informazioni, vedere Attivazione dell'integrazione CLR.

Nell'elenco che segue è riportato un riepilogo dei vantaggi offerti dall'utilizzo di un linguaggio .NET Framework anziché di Transact-SQL:

  • Modello di programmazione avanzato   I linguaggi .NET offrono costrutti e funzionalità in precedenza non disponibili agli sviluppatori SQL.

  • Sicurezza avanzata   Il codice gestito viene eseguito in un ambiente Common Language Runtime ospitato dal modulo di gestione di database. Di conseguenza gli oggetti di database .NET Framework sono più sicuri delle stored procedure estese disponibili nelle versioni precedenti di SQL Server.

  • Tipi e aggregati definiti dall'utente   I tipi e gli aggregati definiti dall'utente sono due nuovi oggetti di database gestiti che espandono le funzionalità di archiviazione ed esecuzione di query di SQL Server.

  • Ambiente di sviluppo comune   Lo sviluppo di database è integrato nell'ambiente di sviluppo di Microsoft Visual Studio. Gli sviluppatori utilizzano per lo sviluppo e il debug degli script e degli oggetti di database gli stessi strumenti adoperati per scrivere componenti e servizi .NET Framework di livello intermedio o di livello client.

  • Prestazioni migliori   Le prestazioni di alcune funzioni, ad esempio quelle che consentono di eseguire operazioni matematiche su ogni riga di un database, potrebbero risultare migliori se tali funzioni, anziché essere scritte nel codice interpretato Transact-SQL, fossero assembly compilati generati da un progetto Visual Basic, Visual C# o Visual C++. È ad esempio possibile ottenere miglioramenti nelle prestazioni in particolare per le funzioni che eseguono operazioni sui valori interi. Tali risultati non sono tuttavia possibili per le stored procedure che accedono solo ai dati.

  • Ricchezza del linguaggio   Visual Basic, Visual C# e Visual C++ forniscono funzionalità non disponibili in Transact-SQL, quali matrici, gestione sofisticata delle eccezioni e riusabilità del codice.

  • Riusabilità del codice   È possibile creare e distribuire una libreria di assembly gestiti seguendo una procedura più semplice della distribuzione di uno script Transact-SQL.

  • Extensibility   A differenza di Transact-SQL, l'utilizzo di Visual Basic, Visual C# o Visual C++ consente di creare due oggetti di database: aggregati e tipi definiti dall'utente.

  • Competenze esistenti   È possibile utilizzare e migliorare le proprie competenze in materia di linguaggi e ambiente di sviluppo in cui si è già acquisita una certa esperienza per creare oggetti di database.

  • Operazioni di sviluppo di alto livello   Quando si sviluppano oggetti di database utilizzando il modello di progetto SQL Server, si agisce su un livello di integrazione completa con il sistema del progetto che include le operazioni di compilazione, debug e distribuzione su più server.

  • Stabilità e affidabilità   Gli oggetti di database creati mediante Visual Basic, Visual C# o Visual C++ sono più sicuri, stabili, potenti e affidabili delle stored procedure estese, che potrebbero produrre perdite di memoria o altri problemi che comportano una riduzione delle prestazioni e dell'affidabilità del server. Quando si eseguono stored procedure create in Visual Basic, Visual C# o Visual C++, la gestione della memoria e il threading non vengono eseguiti dalla stored procedure e pertanto vengono gestiti in modo più affidabile.

  • Sicurezza   Quando si utilizzano oggetti di database creati in Visual Basic, Visual C# o Visual C++, la sicurezza dall'accesso di codice di questi linguaggi è combinata con le autorizzazioni basate sull'utente di SQL Server.

Stored procedure e trigger

Le stored procedure sono un insieme precompilato di istruzioni di programmazione per l'esecuzione di operazioni nel database, archiviate con un nome ed elaborate come unità. Per ulteriori informazioni sulle stored procedure, vedere la documentazione relativa a SQL Server.

Un trigger è un particolare tipo di stored procedure che viene attivato quando si modificano i dati di una tabella specificata utilizzando una o più operazioni di modifica dei dati, quali UPDATE, INSERT o DELETE. Per ulteriori informazioni sui trigger, vedere la documentazione relativa a SQL Server.

Lo sviluppo delle stored procedure e dei trigger è potenziato dalla ricchezza del linguaggio di Visual Basic, Visual C# e Visual C++, in particolare quando si implementa la complessa logica procedurale richiesta per l'applicazione delle regole business. Inoltre .NET Framework contiene molte librerie, tra cui, di particolare interesse, quelle che consentono di gestire molti aspetti della crittografia, le ampie librerie matematiche e l'accesso esterno ai servizi Web, ai file e ai sistemi di comunicazione business-to-business.

Funzioni

Le funzioni agiscono su uno o più valori per la restituzione di un valore scalare o una tabella. Per ulteriori informazioni sui tipi di funzione disponibili nel linguaggio di programmazione Transact-SQL, vedere la documentazione relativa a SQL Server.

Analogamente alle stored procedure e ai trigger, lo sviluppo delle funzioni è migliorato grazie alla ricchezza del linguaggio di Visual Basic, Visual C# e Visual C++, nonché all'accesso a molte librerie contenute in .NET Framework.

Aggregati

Le funzioni di aggregazione vengono utilizzate per riepilogare tutti i dati presenti in una tabella, nonché per eseguire un calcolo su un insieme di valori e restituire un singolo valore scalare. Per ulteriori informazioni sulle funzioni di aggregazione fornite dal linguaggio di programmazione Transact-SQL, vedere la documentazione relativa a SQL Server.

Per integrare queste funzioni di aggregazione, è possibile definire nuovi aggregati per l'esecuzione di funzioni aritmetiche più complesse. È ad esempio possibile eseguire un calcolo sui dati contenuti in molte righe e restituire un valore o creare una stringa concatenata.

Tipi definiti dall'utente

I tipi specificano la natura dei dati. Per informazioni sull'insieme di tipi di dati di sistema forniti con SQL Server, vedere la documentazione relativa a SQL Server.

Utilizzando Visual Basic, Visual C# e Visual C++ si possono definire nuovi tipi per non essere più limitati a quelli predefiniti forniti con SQL Server. È possibile creare tipi semplici, quali i codici postali, o più complessi per l'analisi delle informazioni restituite da una transazione con carta di credito. Inoltre, quando si utilizzano tipi definiti dall'utente, è possibile interpretare e gestire i dati sia sul client che sul server SQL. ADO.NET consente di scaricare un assembly contenente una definizione di tipo da SQL Server e utilizzarla per esaminare i dati sul client SQL.

Vedere anche

Attività

Procedura: creare un progetto SQL Server

Procedura: creare ed eseguire una stored procedure CLR di SQL Server

Procedura: creare ed eseguire un trigger CLR di SQL Server

Procedura: creare ed eseguire un aggregato CLR di SQL Server

Procedura: creare ed eseguire una funzione CLR definita dall'utente di SQL Server

Procedura: creare ed eseguire un tipo CLR definito dall'utente di SQL Server

Procedura dettagliata: creazione di una stored procedure nel codice gestito

Procedura: eseguire il debug di una stored procedure CLR SQL

Concetti

Introduzione all'integrazione con CLR di SQL Server (ADO.NET)

Vantaggi dell'utilizzo di codice gestito per creare oggetti di database

Modelli di elementi per progetti SQL Server

Riferimenti

Attributi per oggetti di database e progetti SQL Server

Altre risorse

Esecuzione del debug di database CLR SQL