Compartir a través de


Tutorial: Depurar un procedimiento almacenado extendido

Este tema se aplica a:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional

Visual Studio Express

6c02e2k1.DoesApplybmp(es-es,VS.100).gif 6c02e2k1.DoesApplybmp(es-es,VS.100).gif 6c02e2k1.DoesApplybmp(es-es,VS.100).gif 6c02e2k1.DoesNotApplybmp(es-es,VS.100).gif
Nota de advertenciaAdvertencia

Los procedimientos almacenados extendidos están en desuso.Aunque continúan siendo admitidos para la compatibilidad con versiones anteriores en ASP.NET, su compatibilidad se eliminará en próximas versiones.

Los procedimientos almacenados extendidos se crearon para habilitar las acciones que no eran posibles en Transact-SQL, como tener acceso al sistema de archivos, leer el Registro, etc.Ahora que es posible realizar estas acciones escribiendo procedimientos de SQL CLR, ha desaparecido la necesidad de escribir procedimientos almacenados extendidos.Se recomienda encarecidamente no escribir nuevos Procedimientos almacenados extendidos, y se pide al usuario que reemplace los existentes por un procedimiento almacenado equivalente de SQL CLR, que resulta más seguro.

Los procedimientos almacenados extendidos son DLL escritas en C++ o cualquier otro lenguaje, en lugar de SQL.Por consiguiente, depurar un procedimiento almacenado extendido es algo muy similar a depurar cualquier DLL en ese lenguaje.

Nota de advertenciaAdvertencia

Los procedimientos almacenados extendidos se escriben normalmente en C++ nativo y carecen de las protecciones que ofrece el código administrado.Se deberían comprobar cuidadosamente, porque los errores tienen la capacidad potencial de bloquear SQL Server.Para evitar la pérdida potencial de datos y otros problemas, no depure un procedimiento almacenado extendido en un servidor de producción.Para obtener más información, vea los Libros en pantalla de ASP.NET.

Los cuadros de diálogo y comandos de menú que verá pueden variar con respecto a los descritos en la Ayuda en función de su edición o configuración activa.Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas.Para obtener más información, vea Visual Studio Settings.

Para depurar un procedimiento almacenado extendido

  1. Empiece con una compilación de depuración de una DLL de un procedimiento almacenado extendido.También necesita una aplicación que llame al procedimiento almacenado extendido que desea depurar.Si no dispone de una, realice una de las siguientes acciones:

    • Cree un proyecto de base de datos de Visual Studio con una conexión de datos para la base de datos que contiene el procedimiento almacenado extendido y código para llamar al procedimiento almacenado extendido.

    • Cree un archivo de script SQL que llame al procedimiento almacenado extendido.

      O bien

    • Utilice una aplicación como SQL Server Management Studio que se incluye en SQL Server, o una aplicación de prueba ODBC que se incluye en ODBC SDK.

  2. Si SQL Server se está ejecutando actualmente como un servicio, deténgalo abriendo el panel de control de Servicios, seleccionando SQL Server y haciendo clic en Detener.

  3. Copie la versión de depuración de la DLL en el directorio donde Sqlservr.exe reside o en cualquier directorio de la ruta de búsqueda.

    O bien

    Establezca un evento posterior a la compilación para copiar la DLL en su proyecto C++ como sigue:

    1. Abra el cuadro de diálogo Páginas de propiedades de <Proyecto>.

    2. En el cuadro de diálogo Páginas de propiedades de <Proyecto>, abra la carpeta Propiedades de configuración.

    3. En Propiedades de configuración, abra la carpeta Eventos de compilación.

    4. Seleccione Evento posterior a la compilación.

    5. En el control de cuadrícula, junto a la Linea de comandos, escriba un comando de copia, como el siguiente ejemplo:

      Copy c:\MyProjects\MyXProc\debug\MyXProc.dll C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn

  4. Registre el procedimiento almacenado extendido.

  5. Especifique SQL Server como ejecutable de llamada y directorio de trabajo para la DLL del procedimiento almacenado extendido.Modifique los valores del cuadro de diálogo Propiedades del proyecto <Proyecto>, al que puede tener acceso en la categoría Depuración de Propiedades de configuración, como se indica a continuación:

    • Si SQL Server se instaló en la ubicación predeterminado, escriba C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\SQLSERVR.EXE en el cuadro Comando.

    • Establezca la entrada Directorio de trabajo en \C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.

    • Establezca la entrada Argumentos de comando en - c.La opción -c indica a SQL Server que se está iniciando desde la línea de comandos y no como un servicio, lo que hace que SQL Server se inicie más rápido.SQL Server no se iniciará como un servicio sino como una aplicación de consola bajo el control del entorno de depuración de Visual Studio.Esto permitirá interceptar y administrar los puntos de interrupción correctamente.

  6. Establezca los puntos de interrupción en el código fuente del procedimiento almacenado extendido.

  7. Utilice un comando de ejecución para iniciar la sesión de depuración.Para obtener más información, vea Control de ejecución.

    Cuando se inicie SQL Server aparecerá una ventana de consola.Cuando se detenga el desplazamiento de texto, el último mensaje dirá:

    Se ha lanzado el procedimiento de inicio 'sp_sqlregister'

    SQL Server se inicia y comienza procesar las solicitudes.

  8. Ejecute el procedimiento almacenado extendido.

    El depurador se interrumpe al alcanzar una línea que contiene un punto de interrupción.

    Para obtener más información sobre cómo escribir procedimientos almacenados extendidos, vea la sección sobre SQL Server de Microsoft Knowledge Base o la sección sobre procedimientos almacenados extendidos de la documentación de SQL Server en MSDN Library.

Vea también

Conceptos

Depurar Transact-SQL