Share via


Distribuzione di oggetti di database CLR

La distribuzione rappresenta il processo tramite il quale si mette a disposizione un'applicazione o un modulo pronto per l'utilizzo perché venga installato ed eseguito in altri computer. L'uso di Microsoft Visual Studio consente di sviluppare oggetti di database CLR (Common Language Runtime) e di distribuirli a un server di prova. In alternativa, è possibile compilare gli oggetti di database gestiti con i file di ridistribuzione di Microsoft .NET Framework. Una volta compilati, gli assembly contenenti gli oggetti di database CLR possono essere distribuiti a un server di prova utilizzando Visual Studio o le istruzioni Transact-SQL. Si noti che non è possibile utilizzare Visual Studio .NET 2003 per la programmazione o la distribuzione dell'integrazione con CLR. Con SQL Server viene fornito .NET Framework preinstallato e non è possibile utilizzare assembly di .NET Framework 2.0 in Visual Studio .NET 2003.

Dopo aver testato e verificato i metodi CLR sul server di prova, sarà possibile distribuirli a server di produzione utilizzando uno script di distribuzione che può essere generato manualmente o tramite SQL Server Management Studio (vedere la procedura riportata più avanti in questo argomento).

La caratteristica di integrazione con CLR è disattivata per impostazione predefinita in SQL Server e deve essere abilitata per utilizzare gli assembly CLR. Per ulteriori informazioni, vedere Abilitazione dell'integrazione con CLR.

Nota

A partire da SQL Server 2005, in un database di SQL Server con livello di compatibilità pari a "80" non è possibile creare tipi definiti dall'utente, stored procedure, funzioni, aggregazioni o trigger gestiti. Per sfruttare le caratteristiche di integrazione con CLR di SQL Server, è necessario utilizzare la stored procedure sp_dbcmptlevel (Transact-SQL) per impostare il livello di compatibilità del database su "90".

Distribuzione dell'assembly a un server di prova

Visual Studio consente di sviluppare aggregazioni definite dall'utente, tipi definiti dall'utente, trigger, procedure e funzioni CLR e di distribuirli a un server di prova. Questi oggetti di database gestiti possono essere compilati anche con i compilatori della riga di comando, ad esempio csc.exe e vbc.exe, inclusi nei file di ridistribuzione di .NET Framework. Per sviluppare oggetti di database gestiti per SQL Server non è necessario l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio.

Verificare che tutti gli avvisi e gli errori del compilatore siano risolti. Gli assembly contenenti le routine CLR possono essere quindi registrati in un database di SQL Server utilizzando Visual Studio o le istruzioni Transact-SQL.

Nota

È necessario abilitare il protocollo di rete TCP/IP nell'istanza di SQL Server per utilizzare Microsoft Visual Studio per lo sviluppo e il debug remoti. Per ulteriori informazioni sull'abilitazione del protocollo TCP/IP nel server, vedere Configurazione dei protocolli di rete client.

Per distribuire l'assembly utilizzando Visual Studio

  1. Compilare il progetto scegliendo Compila <nome progetto> dal menu Compila.

  2. Risolvere tutti gli avvisi e gli errori di compilazione prima di distribuire l'assembly al server di prova.

  3. Scegliere Distribuisci dal menu Compila. L'assembly verrà quindi registrato nel database e nell'istanza di SQL Server specificati quando il progetto di SQL Server è stato creato per la prima volta in Visual Studio.

Per distribuire l'assembly utilizzando Transact-SQL

  1. Compilare l'assembly dal file di origine utilizzando i compilatori della riga di comando inclusi in .NET Framework.

  2. Per i file di origine di Microsoft Visual C#:

  3. csc /target:library C:\helloworld.cs

  4. Per i file di origine di Microsoft Visual Basic:

vbc /target:library C:\helloworld.vb

Questi comandi consentono di avviare il compilatore Visual C# o Visual Basic utilizzando l'opzione /target per specificare la compilazione di una DLL della libreria.

  1. Risolvere tutti gli avvisi e gli errori di compilazione prima di distribuire l'assembly al server di prova.

  2. Aprire SQL Server Management Studio sul server di prova. Creare una nuova query, connessa a un database di prova appropriato (ad esempio AdventureWorks2008R2).

  3. Creare l'assembly nel server aggiungendo alla query l'istruzione Transact-SQL seguente.

CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE

  1. La procedura, la funzione, l'aggregazione, il tipo definito dall'utente o il trigger deve essere quindi creato nell'istanza di SQL Server. Se l'assembly HelloWorld contiene un metodo denominato HelloWorld nella classe Procedures, alla query è possibile aggiungere l'istruzione Transact-SQL seguente per creare una procedura hello in SQL Server.

CREATE PROCEDURE hello

AS

EXTERNAL NAME HelloWorld.Procedures.HelloWorld

Per ulteriori informazioni sulla creazione di diversi tipi di oggetti di database gestiti in SQL Server, vedere Funzioni CLR definite dall'utente, Aggregazioni CLR definite dall'utente, Tipi CLR definiti dall'utente, Stored procedure CLR e Trigger CLR.

Distribuzione dell'assembly a server di produzione

Dopo aver testato e verificato gli oggetti di database CLR sul server di prova, sarà possibile distribuirli a server di produzione. Per ulteriori informazioni sul debug degli oggetti di database gestiti, vedere Debug di oggetti di database CLR.

La distribuzione degli oggetti di database gestiti è simile a quella degli oggetti di database normali, quali tabelle, routine Transact-SQL e così via. Gli assembly che contengono gli oggetti di database CLR possono essere distribuiti agli altri server utilizzando uno script di distribuzione. Lo script di distribuzione può essere compilato utilizzando la funzionalità "Genera script" di Management Studio. Tale script può essere anche compilato manualmente o utilizzando "Genera script" e modificato manualmente. Una volta compilato, può essere eseguito in altre istanze di SQL Server per distribuire gli oggetti di database gestiti.

Per generare uno script di distribuzione utilizzando la funzione Genera script

  1. Aprire Management Studio e connettersi all'istanza di SQL Server in cui è stato registrato l'oggetto di database o l'assembly gestito da distribuire.

  2. In Esplora oggetti espandere gli alberi <nome server> e Database. Fare clic con il pulsante destro del mouse sul database in cui è registrato l'oggetto di database gestito, scegliere Attività, quindi Genera script. Verrà avviata la Generazione guidata script.

  3. Selezionare il database dalla casella di riepilogo, quindi fare clic su Avanti.

  4. Nel riquadro Selezione opzioni generazione script fare clic su Avanti o modificare le opzioni, quindi fare clic su Avanti.

  5. Nel riquadro Selezione tipi di oggetti scegliere il tipo di oggetto di database da distribuire. Fare clic su Avanti.

  6. Per ogni tipo di oggetto selezionato nel riquadro Selezione tipi di oggetti viene visualizzato un riquadro Scegli <tipo>. In questo riquadro è possibile scegliere tra tutte le istanze del tipo di oggetto di database registrato nel database specificato. Selezionare uno o più oggetti e fare clic su Avanti.

  7. Il riquadro Opzioni di output verrà visualizzato dopo la selezione di tutti i tipi di oggetto di database desiderati. Selezionare Genera script nel file e specificare un percorso di file per lo script. Selezionare Avanti. Esaminare le selezioni e fare clic su Fine. Lo script di distribuzione verrà salvato nel percorso di file specificato.

Script post-distribuzione

È possibile eseguire uno script post-distribuzione.

Per aggiungere uno script post-distribuzione, inserire un file denominato postdeployscript.sql nella directory del progetto di Visual Studio. Fare clic ad esempio con il pulsante destro del mouse sul progetto in Esplora soluzioni e scegliere Aggiungi elemento esistente. Aggiungere il file alla radice del progetto, anziché alla cartella Test Scripts.

Fare clic su Distribuisci. In questo modo lo script verrà eseguito in Visual Studio dopo la distribuzione del progetto.