Condividi tramite


Esempio System.Transactions

Data aggiornamento: 5 dicembre 2005

L'esempio System.Transactions illustra il controllo delle transazioni tramite le API gestite dello spazio dei nomi System.Transactions. In particolare, viene utilizzata la classe System.Transactions.TransactionScope per stabilire un limite della transazione al fine di garantire che i valori delle scorte non vengano rettificati a meno che siano presenti scorte sufficienti per soddisfare la richiesta. Se le scorte sono sufficienti, si garantisce che il trasferimento dal magazzino o da una posizione a un'altra avvenga in modo atomico. La registrazione automatica in una transazione distribuita viene dimostrata registrando le modifiche alle scorte in un database di controllo presente in un server separato.

Questo esempio deve essere installato in due parti su due computer fisici: un server per l'esempio principale e un server per il controllo.

Directory di installazione: drive:\Programmi\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\Transaction\

Scenario

Jane è una sviluppatrice di Adventure Works Cycles e deve tenere traccia dei movimenti delle scorte da una posizione a un'altra in modo coerente dal punto di vista delle transazioni, nonché contribuire a controllare le modifiche alle scorte.

Linguaggi

Transact-SQL Visual C# e Visual Basic.

Funzionalità

L'esempio System.Transactions prevede l'utilizzo delle funzionalità seguenti di SQL Server.

Area di applicazione Funzionalità

Generale

Common language runtime (CLR), transazioni, transazioni distribuite, ADO .NET, MSDTC

Prerequisiti

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

  • Microsoft SQL Server 2005 o Microsoft 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. Vedere Installazione di .NET Framework SDK.
  • Microsoft Distributed Transaction Coordinator (MSDTC). MSDTC deve essere configurato per permettere connessioni client in ingresso e uscita e deve essere installato e configurato su entrambi i server utilizzati per l'esempio. Per ulteriori informazioni, vedere la documentazione di Servizi componenti.

Prima di eseguire l'esempio, configurare i componenti seguenti:

  • Se su uno dei server è abilitato Windows Firewall, configurarlo su entrambi i server per consentire connessioni SQL Server e MSDTC. Per ulteriori informazioni, vedere la documentazione di Windows Firewall.
  • Utilizzare lo strumento Configurazione superficie di attacco di SQL Server per abilitare l'accesso remoto per SQL Server 2005 sul server di controllo.

Generazione dell'esempio

Se ancora non è stato creato il file di chiave con nome sicuro ExternalSampleKey.snk, generarlo seguendo le istruzioni riportate di seguito.

Per generare un file di chiave con nome sicuro

  1. Aprire il prompt dei comandi Microsoft Visual Studio 2005. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft Visual Studio 2005, Visual Studio Tools e quindi Prompt dei comandi di Visual Studio 2005.

    —O—

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

  2. Al prompt dei comandi mediante il comando CD (change directory) passare dalla directory corrente della finestra del prompt dei comandi alla cartella Samples.

    [!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 e quindi Directory esempi. Se è stato utilizzato il percorso di installazione predefinito, gli esempi si troveranno in <system_drive>:\Programmi\Microsoft SQL Server\90\Samples.

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

    sn -k ExternalSampleKey.snk

    ms345266.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 (informazioni in lingua inglese).

Per generare l'esempio System.Transactions

  1. Modificare CS\Transaction\InventoryMover.cs cambiando il valore della costante stringa auditConnectionString per denominare in modo corretto il server sui cui verranno memorizzate le informazioni di controllo per l'esempio. Questo server deve essere un computer fisico diverso da quello utilizzato per installare la parte principale dell'esempio. Impostare un account di prova con l'autenticazione di SQL Server sul server di controllo e quindi modificare la stringa auditConnectionString specificando il nome utente e la password assegnati all'account.

  2. Compilare l'esempio tramite Visual Studio 2005 e la soluzione Visual Studio fornita oppure tramite Microsoft MSBuild, incluso in .NET Framework SDK 2.0. Al prompt dei comandi eseguire un comando simile al seguente:

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

  3. Verificare che il database AdventureWorks sia installato.

  4. Se gli esempi del motore di SQL Server non sono stati installati nel percorso predefinito, modificare il percorso nella parte CREATE ASSEMBLY dello script in Scripts\InstallCS.sql e Scripts\InstallVB.sql per fare riferimento al percorso in cui sono stati installati gli esempi.

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

  6. Aprire il file scripts\installCS.sql o scripts\installVB.sql, a seconda che sia stata eseguita la compilazione del progetto Visual C# o del progetto Visual Basic in Microsoft Management Studio. Eseguire lo script contenuto nel file mentre si è connessi al server principale dell'esempio, oppure eseguire un comando simile al seguente in una finestra del prompt dei comandi sul server principale dell'esempio:

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

  7. Aprire il file scripts\installDB.sql in Microsoft Management Studio. Eseguire lo script contenuto nel file mentre si è connessi al server di controllo, oppure eseguire un comando simile al seguente in una finestra del prompt dei comandi sul server di controllo:

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

Esecuzione dell'esempio

Per eseguire l'esempio System.Transactions

  1. Aprire il file scripts\test.sql in Management Studio. Eseguire lo script contenuto 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 System.Transactions

  1. Aprire il file scripts\cleanup.sql in Management Studio. Eseguire lo script contenuto nel file sul server principale dell'esempio oppure eseguire il comando seguente in una finestra del prompt dei comandi sul server principale dell'esempio:

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

  2. Aprire il file scripts\cleanup.sql in Management Studio. Eseguire lo script contenuto nel file sul server di controllo oppure eseguire il comando seguente in una finestra del prompt dei comandi sul server di controllo:

    sqlcmd -E -I -i Scripts\cleanupDB.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.