Condividi tramite


Esempio di set di risultati

Data aggiornamento: 17 luglio 2006

A volte può rivelarsi utile poter eseguire comandi mentre si stanno leggendo i risultati di una query senza dover aprire una nuova connessione e senza dover leggere tutti i risultati in memoria. La funzionalità MARS (Multiple Active Result Set) di ADO .NET 2.0 è una tecnologia che consente di raggiungere tale obiettivo. Attualmente questa funzionalità non è implementata per il provider in-process utilizzato nella programmazione sul lato server. Per ovviare a questa limitazione è possibile utilizzare cursori sul lato server. Questo esempio illustra come utilizzare i cursori sul lato server per ovviare alla mancanza del supporto MARS nella programmazione sul lato server.

[!NOTA] L'utilizzo di cursori sul lato server comporta un utilizzo significativo delle risorse del server e a volte impedisce a Query Optimizer in Microsoft SQL Server di migliorare le prestazioni delle query. È pertanto consigliabile riscrivere il codice per utilizzare istruzioni JOIN, se possibile.

L'API per questa classe è simile a un lettore di dati, ad eccezione del fatto che è possibile passare al risultato precedente o successivo nel set di risultati ed eseguire altri comandi sulla connessione mentre il set di risultati è aperto.

Per facilitare la comprensione dell'esempio, questa implementazione è stata notevolmente semplificata. In un'implementazione più efficace verrebbero recuperate più righe per evitare turnaround del database per ogni riga recuperata.

L'utilizzo di questa classe garantisce un footprint di memoria notevolmente inferiore rispetto a quello derivante dall'inserimento di tutti i risultati della query in un set di dati, aspetto di estrema importanza nella programmazione sul lato server.

L'esempio illustra inoltre l'utilizzo dell'attributo "Allow partially trusted callers" per indicare che l'assembly del set di risultati è una libreria che può essere chiamata da altri assembly senza problemi. Questo approccio è leggermente più complesso ma molto più sicuro rispetto alla registrazione dell'assembly chiamante tramite l'autorizzazione unsafe. È più sicuro in quanto, registrando l'assembly chiamante come safe, si limitano le risorse interessate al di fuori del server e si evitano danni all'integrità del server.

Directory di installazione:

drive:\Programmi\Microsoft SQL Server\90\Samples\

Engine\Programmability\CLR\ResultSet\.

Scenario

Jane è una sviluppatrice di Adventure Works Cycles e deve creare un'applicazione che legge dati ed esegue altre azioni prima che tutti i dati vengano restituiti dalla query sul lato server.

Linguaggi

Transact-SQL, Visual C# e Visual Basic.

Funzionalità

L'esempio ResultSet utilizza le funzionalità seguenti di SQL Server.

Area di applicazione Funzionalità

Generale

CLR, cursori sul lato server, Transact-SQL

Prerequisiti

Prima di eseguire questo esempio, verificare che siano installati i prodotti software seguenti:

  • SQL Server 2005 o SQL Server 2005 Express Edition (SQL Server Express). SQL Server Express è disponibile gratuitamente nel sito Web relativo a documentazione ed esempi di SQL Server 2005 Express Edition.
  • Il database AdventureWorks, incluso in SQL Server 2005 e disponibile nel sito Web per gli sviluppatori di SQL Server.
  • Gli esempi di Motore di database di SQL Server 2005, inclusi in SQL Server 2005. È possibile scaricare la versione più recente degli esempi dal sito Web per gli sviluppatori di SQL Server.
  • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. .NET Framework SDK è disponibile gratuitamente. Per ulteriori informazioni, vedere Installazione di .NET Framework SDK.

Generazione dell'esempio

Se non è stato ancora creato un file di chiave con nome sicuro, generare il file di chiave seguendo le istruzioni seguenti.

Per generare un file di chiave con nome sicuro

  1. Aprire il prompt dei comandi di Microsoft Visual Studio 2005. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

    -- oppure --

    Aprire il prompt dei comandi di Microsoft .NET Framework. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

  2. Utilizzare il comando CD (change directory) per passare dalla directory corrente della finestra del prompt dei comandi alla cartella in cui sono stati installati gli esempi.

    [!NOTA] Per determinare la cartella in cui si trovano gli esempi, fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2005, Documentazione ed esercitazioni, quindi Samples. Se è stato utilizzato il percorso di installazione predefinito, gli esempi si troveranno in <unità_sistema>:\Programmi\Microsoft SQL Server\100\Samples.

  3. Al prompt dei comandi digitare il comando seguente per generare il file di chiave:

    sn -k SampleKey.snk

    ms160831.note(it-it,SQL.90).gifImportante:
    Per ulteriori informazioni sulla coppia di chiavi con nome sicuro, vedere l'argomento relativo ai nomi sicuri e alla protezione in .NET Framework nel centro per sviluppatori di .NET su MSDN.

Per generare l'esempio ResultSet

  1. Compilare l'esempio mediante Visual Studio 2005 e la soluzione Visual Studio fornita, oppure mediante Microsoft MSBuild, incluso in .NET Framework SDK 2,0, eseguendo un comando simile al seguente al prompt dei comandi:

    msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\ ResultSet.sln

  2. Verificare che il database AdventureWorks sia installato.

  3. Se gli esempi di Motore di database di SQL Server non sono stati installati nel percorso predefinito, modificare il percorso nella parte CREATE ASSEMBLY dello script in Scripts\InstallCS.sql per fare riferimento al percorso di installazione degli esempi.

  4. Se non si è amministratore dell'istanza di SQL Server in uso, è necessario ottenere l'autorizzazione CreateAssembly dall'amministratore per completare l'installazione.

  5. Aprire il file scripts\installCS.sql o scripts\installVB.sql, a seconda che sia stato compilato il progetto Visual C# o il progetto Visual Basic, in SQL Server Management Studio. Eseguire lo script contenuto nel file oppure eseguire un comando simile al seguente in una finestra del prompt dei comandi:

    sqlcmd -E -I -i Scripts\InstallCS.sql

Esecuzione dell'esempio

Per eseguire l'esempio ResultSet

  1. Aprire il file scripts\test.sql in Management Studio ed eseguire lo script incluso nel file, oppure eseguire il comando seguente in una finestra del prompt dei comandi:

    sqlcmd -E -I -i Scripts\test.sql

Rimozione dell'esempio

Per rimuovere l'esempio ResultSet

  1. Aprire il file scripts\cleanup.sql in SQL Server Management Studio ed eseguire lo script contenuto nel file. In alternativa, eseguire il comando seguente in una finestra del prompt dei comandi:

    sqlcmd -E -I -i Scripts\cleanup.sql

Commenti

Per il corretto funzionamento di questo esempio, è necessario abilitare CLR per SQL Server 2005 o SQL Server Express.

Gli esempi vengono forniti esclusivamente a scopo didattico. Non sono destinati all'utilizzo in un ambiente di produzione e non sono stati testati in un ambiente di produzione. Microsoft non rende disponibile il supporto tecnico per questi esempi. Le applicazioni e gli assembly di esempio non devono essere connessi o utilizzati con il database di SQL Server o il server di report in un ambiente di produzione senza l'autorizzazione dell'amministratore di sistema.

Vedere anche

Altre risorse

Allowing Partially Trusted Callers

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Contenuto modificato:
  • Modifica delle istruzioni per la generazione di un file di chiave, inclusi il nome e il percorso del file di chiave.

17 luglio 2006

Contenuto aggiunto:
  • Aggiunta di contenuto descrittivo relativo ai problemi di protezione.