Vantaggi dell'utilizzo di codice gestito per creare oggetti di database
Per creare oggetti di database e recuperare e aggiornare dati per i database di SQL Server, è possibile utilizzare i linguaggi .NET Framework oltre al linguaggio di programmazione Transact-SQL. Nei progetti Visual Basic o Visual C# è possibile creare stored procedure, aggregati, trigger, funzioni definite dall'utente e tipi definiti dall'utente. Gli oggetti di database scritti in codice gestito vengono denominati oggetti Common Language Runtime di SQL Server o oggetti CLR SQL.
Nota
Per impostazione predefinita, la funzionalità di integrazione di Common Language Runtime (CLR) è disattivata in SQL Server. Per utilizzare gli elementi di progetti SQL Server, è necessario abilitare l'integrazione CLR. A tale scopo, utilizzare l'opzione clr enabled della stored procedure sp_configure. Per ulteriori informazioni, vedere l'argomento Opzione clr enabled nel sito Web Microsoft.
Nell'elenco seguente è riportato un riepilogo dei vantaggi offerti dall'utilizzo di un linguaggio .NET Framework anziché Transact-SQL:
Modello di programmazione avanzato I linguaggi .NET offrono costrutti e funzionalità in precedenza non disponibili agli sviluppatori SQL Server.
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. Quando si utilizzano gli oggetti di database creati in Visual Basic o Visual C#, la sicurezza dall'accesso di codice di questi linguaggi è combinata con le autorizzazioni basate sull'utente di SQL Server.
Tipi e aggregazioni definiti dall'utente I tipi e le aggregazioni definiti dall'utente sono due nuovi oggetti di database gestiti che espandono le funzionalità di archiviazione e 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 da un progetto Visual Basic 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 Basico 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.
Estensibilità utilizzando Visual Basic o Visual C# è possibile creare due oggetti di database che non possono essere creati tramite Transact-SQL: 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 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 o Visual C#, la gestione della memoria e il threading non vengono eseguiti dalla stored procedure e pertanto vengono gestiti in modo più affidabile.
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 avviato quando si modificano i dati in una tabella specificata utilizzando una o più operazioni di modifica dei dati: Update, insert o delete. È inoltre possibile creare trigger a livello di database che vengano attivati in risposta a istruzioni DDL (Data Definition Language). Questi trigger possono essere utilizzati per eseguire attività amministrative nel database, ad esempio controllo e regolamentazione delle operazioni di database. 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 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 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 disponibili nel 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 sul set di tipi di dati di sistema forniti con SQL Server, vedere la documentazione relativa a SQL Server.
Utilizzando Visual Basic 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 SQL che su SQL Server. 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 dettagliata: creazione di una stored procedure nel codice gestito
Procedura: eseguire il debug di una stored procedure CLR SQL
Riferimenti
Attributi per oggetti di database e progetti di database CLR SQL
Concetti
Introduzione all'integrazione con CLR di SQL Server (ADO.NET)
Vantaggi dell'utilizzo di codice gestito per creare oggetti di database