Share via


Tutorial: Depurar una función escalar definida por el usuario 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 una función definida por el usuario (UDF) de SQL CLR. Crea una nueva función definida por el usuario de SQL CLR en la base de datos de ejemplo AdventureWorks.

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 una función escalar definida por el usuario 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 una nueva función utilizando el código de la primera parte del ejemplo siguiente y asígnele el nombre OrderCount.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 la función incluyéndola en una instrucción SELECT. 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 CallOrderCount.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. Coloque un punto de interrupción en OrderCount.csen la línea que crea una instancia de SqlCommand y, a continuación, en el menú Depurar, haga clic en Iniciar 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 la función.

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

    1. Recorra el código hasta después de la instrucción que crea una instancia de SqlCommand utilizando Paso a paso por instrucciones en el menú Depurar.

    2. En la ventana Variables locales, abra la variable sqlComm, que es un SqlCommand, y examine sus miembros.

    3. Haga clic en Paso a paso por instrucciones en el menú Depurar para ejecutar una línea de la función. Observe que se ha creado una instancia del miembro sqlComm.CommandText.

    4. En el Editor de texto, arrastre sqlComm a cualquier ubicación en la ventana Inspección. La variable se agrega ahora a la lista de variables inspeccionadas.

    5. Seleccione de nuevo Paso a paso por instrucciones y observe que se abre una nueva ventana denominada T-SQL dinámico, en la que se muestra la instrucción SQL que está a punto de ejecutarse.

    6. Elija Paso a paso por instrucciones para ejecutar la instrucción y volver a la función.

    7. Presione de nuevo Continuar y observe que se abre una segunda ventana T-SQL dinámico, en la que se muestra el código que devuelve el valor de la función.

    8. Presione de nuevo Continuar para finalizar la depuración de la función.

Ejemplo

Éste es el código necesario para crear la función.

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
 
 
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static int OrderCount()
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandText = "SELECT 42";
                  
                  //cmd = new SqlCommand("SELECT 42",conn);
 
                  int result = (int)cmd.ExecuteScalar();
                  return result;
            }
    }
};

Este es el script de prueba que llama a la función.

SELECT dbo.OrderCount()

Vea también

Tareas

Cómo: Crear y ejecutar una función CLR de servidor SQL Server definido por el usuario

Otros recursos

Depuración de bases de datos de SQL CLR