Compartir a través de


Tutorial: Depurar un desencadenador de SQL CLR

Este tema se aplica a:

Edición

Visual Basic

C#

C++

Web Developer

Express

El tema no es aplicable El tema no es aplicable El tema no es aplicable El tema no es aplicable

Standard

El tema no es aplicable El tema no es aplicable El tema no es aplicable El tema no es aplicable

Pro y Team

El tema es aplicable El tema es aplicable El tema es aplicable El tema es aplicable

En este ejemplo se muestra cómo depurar un desencadenador de SQL CLR. Se utiliza la tabla Contacto de la base de datos de ejemplo AdventureWorks, que es una de las bases de datos instaladas con SQL Server 2005. En el ejemplo se crea un nuevo desencadenador CLR de inserción en la tabla Contacto, el cual se depura paso a paso por instrucción después.

Si al intentar depurar un objeto SQL CLR, aparece el mensaje "Cancelado por el usuario", debe configurar manualmente el equipo en el que se ejecuta Visual Studio y el equipo en el que se ejecuta SQL Server. Para obtener más información, vea Cómo: Configurar sus equipos para habilitar la depuración Transact-SQL y SQL CLR.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Trabajar con valores de configuración.

Para depurar un desencadenador de SQL CLR:

  1. En un nuevo proyecto de SQL CLR, establezca una conexión con la base de datos AdventureWorks. Para obtener más información, vea How to: Connect to a Database.

  2. Cree un nuevo desencadenador utilizando el código de la primera parte del ejemplo siguiente y asígnele el nombre iContact.cs. Para obtener más información, vea How to: Develop with the SQL Server Project Type.

  3. Agregue un script que pruebe el desencadenador activándolo. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el directorio SecuenciasDePrueba, seleccione Agregar script de prueba e inserte el código de la segunda parte del ejemplo. Guarde el archivo con el nombre truContact.sql. Haga clic con el botón secundario del mouse en el nombre del archivo y elija Establecer como script de depuración predeterminado.

  4. Establezca puntos de interrupción en iContact.cs y, a continuación, haga clic en Iniciar en el menú Depurar para compilar e implementar el proyecto y hacer pruebas unitarias del mismo. Cuando el puntero de instrucción, designado mediante una flecha amarilla, aparece sobre un punto de interrupción, se está depurando el desencadenador.

  5. Pruebe diferentes características de depuración.

    1. Recorra el código hasta después de la instrucción que crea instancias de SqlTriggerContext.

    2. Abra la ventana Variables locales. Observe que puede abrir la variable triggContext, que es un SqlTriggerContext, y examinar sus miembros. Para obtener más información, vea Cómo: Utilizar ventanas de variables en el depurador.

      Nota

      Puede que los cambios de los valores de las variables realizados en las ventanas del depurador no se reflejen en el servidor. Para obtener más información, vea Limitaciones de la depuración de SQL.

    3. Elija Paso a paso por instrucciones en el menú Depurar para ejecutar una línea en el procedimiento almacenado. Observe que la ejecución ha creado instancias del valor de la variable sqlP de tipo SqlPipe.

    4. Abra la ventana Inspección. Arrastre la variable sqlP a cualquier ubicación en la ventana Inspección. La variable se agrega ahora a la lista de variables inspeccionadas. Para obtener más información, vea Cómo: Utilizar ventanas de variables en el depurador.

      Nota

      También puede editar los valores de las variables en la ventana Inspección.

    5. En el editor de texto, haga clic con el botón secundario del mouse en la última línea y haga clic en Insertar punto de interrupción.

    6. En el menú Depurar, haga clic en Continuar. El depurador ejecutará el código hasta el nuevo punto de interrupción.

  6. Haga clic de nuevo en Continuar para finalizar la depuración del desencadenador. Aparecerá un mensaje en la Ventana de salida que anuncia la correcta implementación del desencadenador y muestra el resultado de la ejecución de los comandos en el archivo truContact.sql.

Ejemplo

Éste es el código requerido para crear el desencadenador que se utiliza en este ejemplo.

using System;
using System.Data;
using System.Data.Sql;
using Microsoft.SqlServer.Server;


public partial class Triggers
{
      // Enter existing table or view for the target and uncomment the attribute line.
      [Microsoft.SqlServer.Server.SqlTrigger (Name="Trigger1", Target="primes", Event="FOR UPDATE")]
      public static void Trigger1()
      {
            SqlTriggerContext triggContext = SqlContext.TriggerContext;
            SqlPipe sqlP = SqlContext.Pipe;
            sqlP.Send("primes inserted!");
      }
}

Este es el script de prueba que activará el desencadenador.

UPDATE Person.Contact SET MiddleName = 'A' WHERE ContactID = 8

Vea también

Tareas

Cómo: Crear y ejecutar un desencadenador de SQL Server mediante la integración de Common Language Runtime