System.Transactions (ejemplo)

Actualizado: 5 de diciembre de 2005

El ejemplo System.Transactions muestra el control de transacciones con las API administradas que se encuentran en el espacio de nombres System.Transactions. En particular, se usa la clase System.Transactions.TransactionScope para establecer un límite de transacciones con el objeto de asegurar que las cifras del inventario no están ajustadas a menos que haya inventario suficiente para cubrir la solicitud y, si hay suficiente inventario, que la transferencia del inventario de una ubicación a otra se produce de forma indivisible. El registro automático de una transacción distribuida se demuestra registrando cambios en el inventario de una base de datos de auditoría que está almacenada en un servidor independiente.

Este ejemplo se debe instalar en dos partes, en dos equipos físicos: un servidor de ejemplo principal y un servidor de auditoría.

Directorio de instalación: unidad:\Archivos de programa\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\Transaction\

Escenario

Jane es programadora en Adventure Works Cycles. Tiene que realizar el seguimiento de los movimientos del inventario de una ubicación a otra de una manera coherente con respecto a las transacciones y participar en la auditoría de los cambios del inventario.

Lenguajes

Transact-SQL, Visual C# y Visual Basic.

Características

El ejemplo System.Transactions usa las características siguientes de SQL Server.

Área de aplicación Características

Global

Common Language Runtime (CLR), transacciones, transacciones distribuidas, ADO .NET, MSDTC

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que esté instalado el siguiente software:

  • Microsoft SQL Server 2005 o bien Microsoft SQL Server 2005 Express Edition (SQL Server Express). Puede obtener SQL Server Express de forma gratuita desde el sitio Web de Documentación y ejemplos de SQL Server 2005 Express Edition.
  • La base de datos AdventureWorks incluida en SQL Server 2005, que también está disponible en el sitio Web para programadores de SQL Server.
  • Los ejemplos de SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005). Estos ejemplos están incluidos en SQL Server 2005. Puede descargar la última versión de los ejemplos en el sitio Web para programadores de SQL Server.
  • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. Puede obtener .NET Framework SDK de forma gratuita. Vea Instalar .NET Framework SDK.
  • Coordinador de transacciones distribuidas de Microsoft (MSDTC). MSDTC debe configurarse para permitir las conexiones de cliente entrantes y salientes. Debe instalar y configurar MSDTC en los dos servidores que se usan en este ejemplo. Para obtener más información, vea la documentación de Servicios de componentes.

Antes de ejecutar este ejemplo, configure los componentes siguientes:

  • Si Firewall de Windows está habilitado en alguno de los servidores, configúrelo en ambos para permitir conexiones con SQL Server y MSDTC. Para obtener más información, vea la documentación de Firewall de Windows.
  • Use la herramienta Configuración de superficie de SQL Server para habilitar el acceso remoto para SQL Server 2005 en el servidor de auditoría.

Generar el ejemplo

Si todavía no ha creado el archivo de clave de nombre seguro ExternalSampleKey.snk, siga estas instrucciones para generarlo.

Para generar un archivo de clave de nombre seguro

  1. Abra un símbolo del sistema de Microsoft Visual Studio 2005. Haga clic en Inicio, seleccione Todos los programas, Microsoft Visual Studio 2005, Visual Studio Tools y, a continuación, haga clic en Visual Studio 2005 Command Prompt.

    O bien

    Abra un símbolo del sistema de Microsoft .NET Framework. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK v2.0 y, a continuación, haga clic en SDK Command Prompt.

  2. En el símbolo del sistema, use el comando de cambio de directorio (CD) para cambiar la carpeta actual de la ventana del símbolo del sistema a la carpeta Samples.

    [!NOTA] Para determinar la carpeta donde se encuentran los ejemplos, haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005, Documentation and Tutorials y, a continuación, haga clic en Samples Directory. Si se usó la ubicación de instalación predeterminada, los ejemplos se encuentran en <system_drive>:\Archivos de programa\Microsoft SQL Server\90\Samples.

  3. En el símbolo del sistema, ejecute el comando siguiente para generar el archivo de clave:

    sn -k ExternalSampleKey.snk

    ms345266.note(es-es,SQL.90).gifImportante:
    Para obtener más información acerca del par de claves de nombre seguro, vea el apartado sobre informes de seguridad de nombres seguros y seguridad en .NET Framework en el centro de desarrollo de .NET de MSDN.

Para generar el ejemplo System.Transactions

  1. Edite el archivo CS\Transaction\InventoryMover.cs y cambie el valor de la constante de cadena auditConnectionString para asignar el nombre correcto al servidor que almacenará la información de auditoría en este ejemplo. Este servidor debe ser un equipo físico diferente del que usará para instalar la parte principal de este ejemplo. Configure una cuenta de prueba con la autenticación de SQL Server en el servidor de auditoría y, después, modifique auditConnectionString para especificar el nombre de usuario y la contraseña que asignó a esta cuenta.

  2. Compile el ejemplo mediante Visual Studio 2005 y la solución Visual Studio proporcionada o mediante Microsoft MSBuild, que se incluye en el SDK 2.0 de .NET Framework. Ejecute un comando similar al siguiente en un símbolo del sistema:

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

  3. Asegúrese de que la base de datos AdventureWorks esté instalada.

  4. Si no ha instalado los ejemplos de motor de SQL Server en la ubicación predeterminada, modifique la ruta de acceso de la sección CREATE ASSEMBLY de la secuencia de comandos que se encuentra en Scripts\InstallCS.sql y Scripts\InstallVB.sql para que haga referencia a la ubicación donde se han instalado los ejemplos.

  5. Si no es administrador de la instancia de SQL Server que utiliza, debe hacer que un administrador le conceda el permiso CreateAssembly para completar la instalación.

  6. Abra el archivo scripts\installCS.sql o scripts\installVB.sql, dependiendo de si ha compilado el proyecto de Visual C# o el de Visual Basic en Microsoft Management Studio. Ejecute la secuencia de comandos que contiene el archivo mientras está conectado al servidor principal del ejemplo o ejecute un comando similar al siguiente en una ventana del símbolo del sistema en el servidor principal del ejemplo:

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

  7. Abra el archivo scripts\installDB.sql en Microsoft Management Studio. Ejecute la secuencia de comandos que contiene el archivo mientras está conectado al servidor de auditoría o ejecute un comando similar al siguiente en una ventana del símbolo del sistema en el servidor de auditoría:

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

Ejecutar el ejemplo

Para ejecutar el ejemplo System.Transactions

  1. Abra el archivo scripts\test.sql en Management Studio. Ejecute la secuencia de comandos que contiene el archivo o ejecute el comando siguiente en una ventana del símbolo del sistema:

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

Quitar el ejemplo

Para quitar el ejemplo System.Transactions

  1. Abra el archivo scripts\cleanup.sql en Management Studio. Ejecute la secuencia de comandos que contiene el archivo en el servidor principal del ejemplo o ejecute el comando siguiente en una ventana del símbolo del sistema en el servidor principal del ejemplo:

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

  2. Abra el archivo scripts\cleanup.sql en Management Studio. Ejecute la secuencia de comandos que contiene el archivo en el servidor de auditoría o ejecute el comando siguiente en una ventana del símbolo del sistema en el servidor de auditoría:

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

Comentarios

El CLR para SQL Server 2005 o SQL Server Express debe estar habilitado para que este ejemplo funcione correctamente.

Los ejemplos se proporcionan exclusivamente con fines formativos. No se han diseñado para utilizarse en un entorno de producción y no se han probado en ningún entorno de este tipo. Microsoft no ofrece soporte técnico para estos ejemplos. Las aplicaciones y los ensamblados de ejemplo no se deben conectar ni usar con la base de datos de SQL Server de producción ni con el servidor de informes sin el permiso del administrador del sistema.