Cómo: Depurar un procedimiento almacenado 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 forma predeterminada.

Se puede depurar un procedimiento almacenado de SQL CLR existente mediante una depuración directa de la base de datos, de la misma manera que se haría para un procedimiento de T-SQL. Sin embargo, esto no servirá si tiene que crear o modificar un procedimiento de SQL CLR, ya que es necesario compilarlo e implementarlo. Estos pasos no existen para el procedimiento de T-SQL. En este caso debe crear un proyecto de SQL Server en Visual Studio.

En la tarea siguiente se crea un nuevo procedimiento almacenado de SQL CLR en la base de datos AdventureWorks, una de las bases de datos que vienen incluidas con SQL Server 2005, y posteriormente se muestra cómo depurarlo. Se creará un procedimiento almacenado que agrega una nueva moneda a la tabla Sales.Currency.

Este ejemplo se centra en la depuración dentro de un proyecto de SQL Server. Una vez creado el procedimiento almacenado, puede depurarlo utilizando la depuración directa de la base de datos. Para obtener más información, vea Cómo: Recorrer paso a paso un objeto utilizando el Explorador de servidores.

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 procedimiento almacenado 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 procedimiento almacenado utilizando el código de la primera parte del ejemplo siguiente y asígnele el nombre InsertCurrency.cs. Para obtener más información, vea Cómo: Desarrollar con el tipo de proyecto de SQL Server.

  3. Agregue un script que compruebe el procedimiento almacenado por medio de una llamada. 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 que sigue a continuación. Guarde el archivo con el nombre InsertCurrency.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 InsertCurrency.cs y, a continuación, en el menú Depurar, haga clic en Iniciar para compilar, implementar y hacer pruebas unitarias en el proyecto. Si el puntero de instrucción, designado por una flecha amarilla, aparece sobre un punto de interrupción, está depurando el procedimiento almacenado.

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

    1. Abra la ventana Variables locales y, en el menú Depurar, haga clic en Paso a paso por instrucciones para recorrer el procedimiento almacenado de línea en línea. Observe que el valor de la variable @mynvarchar ha cambiado en la ventana Variables locales y ahora se muestra en rojo para indicar que ha cambiado. Para obtener más información, vea Utilizar la ventana Variables locales.

      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.

    2. Abra la ventana Inspección. En el Editor de texto, arrastre la variable InsertCurrencyCommand 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.

    3. En el editor de texto, haga clic con el botón secundario del mouse en la línea InsertCurrencyCommand.ExecuteNonQuery y, en el menú de acceso directo, elija Insertar punto de interrupción.

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

  6. Vuelva a hacer clic en Continuar para finalizar la depuración del procedimiento almacenado.

    Aparecerá un mensaje en la ventana Resultados que anuncia la correcta implementación del procedimiento almacenado y muestra el resultado de la ejecución de los comandos en el archivo InsertCurrency.sql.

Ejemplo

Reemplace la plantilla de procedimiento almacenado con este código.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

Este es el script de prueba que se utiliza para ejecutar el procedimiento almacenado.

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

Vea también

Tareas

Cómo: Crear y ejecutar un procedimiento CLR almacenado de SQL Server

Otros recursos

Depuración de bases de datos de SQL CLR