Tutorial: Depurar un desencadenador de SQL CLR

Actualización: noviembre 2007

Este tema se aplica a:

Edición

Visual Basic

C#

C++

Web Developer

Express

Standard

Pro y Team

Leyenda de la tabla:

Se aplica

No procede

Comando o comandos ocultos de manera predeterminada.

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 ejecuta paso a paso.

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 Valores de configuración de Visual Studio.

Para depurar un desencadenador de SQL CLR:

  1. En un nuevo proyecto de SQL Server, establezca una conexión a la base de datos de ejemplo AdventureWorks. Para obtener más información, vea Cómo: Conectarse a una base de datos.

  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 Cómo: Desarrollar con el tipo de proyecto de SQL Server.

  3. Agregue una secuencia de comandos que pruebe el desencadenador activándolo. En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) 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 secuencia de comandos de depuración predeterminada.

  4. Establezca puntos de interrupción en iContact.csy, 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 Resultados 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 CLR de SQL Server

Otros recursos

Depuración de bases de datos de SQL CLR