ResultSet (ejemplo)

Actualizado: 17 de julio de 2006

A veces resulta útil poder ejecutar comandos mientras se leen resultados de una consulta sin abrir una nueva conexión y sin leer todos los resultados en la memoria. La característica conjunto de resultados activos múltiples (MARS) de ADO .NET 2.0 es una tecnología que puede ayudar a conseguirlo. Actualmente, MARS no está implementado para el proveedor en proceso que se utiliza para la programación del servidor. Para subsanar esta limitación, se pueden usar cursores del servidor. Este ejemplo muestra cómo usar cursores del servidor para resolver la ausencia de compatibilidad con MARS de la programación del servidor.

[!NOTA] El uso de cursores del servidor es costoso en lo que se refiere a los recursos del servidor y a veces puede impedir que el optimizador de consultas de Microsoft SQL Server mejore el rendimiento de las consultas. Por lo tanto, puede resultar conveniente volver a escribir el código para usar JOIN siempre que sea posible.

La API para esta clase es similar a un lector de datos, salvo que puede desplazarse hacia adelante o hacia atrás por todo el conjunto de resultados, y se pueden emitir otros comandos para la conexión mientras el conjunto de resultados está abierto.

Esta implementación está muy simplificada para que el ejemplo sea fácil de entender. Una implementación más eficiente recuperaría varias filas para evitar el tiempo de devolución de la base de datos por fila recuperada.

Utilizar esta clase puede suponer el uso de un volumen de memoria significativamente más pequeño que el necesario para llenar un conjunto de datos con todos los resultados de una consulta, lo que es muy importante para la programación del servidor.

Este ejemplo también muestra el uso del atributo "Allow partially trusted callers" para indicar que el ensamblado Conjunto de resultados es una biblioteca a la que se puede llamar de forma segura desde otros ensamblados. Este método es un poco más complejo, pero mucho más seguro que registrar el ensamblado que llama mediante el permiso unsafe. Es más seguro porque el registro del emsamblado que llama como safe limita los recursos afectados fuera del servidor y evita daños para la integridad del mismo.

Directorio de instalación:

unidad:\Archivos de programa\Microsoft SQL Server\90\Samples\

Engine\Programmability\CLR\ResultSet\

Escenario

Jane es programadora para Adventure Works Cycles. Tiene que escribir software que lea datos y realice otras acciones antes de que se devuelvan todos los datos de la consulta realizada en el servidor.

Lenguajes

Transact-SQL, Visual C# y Visual Basic.

Características

El ejemplo ResultSet usa las siguientes características de SQL Server.

Área de aplicación Características

Global

CLR, cursores del servidor, Transact-SQL

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que esté instalado el siguiente software:

  • SQL Server 2005 o bien SQL Server 2005 Express Edition (SQL Server Express). Puede obtener SQL Server Express sin cargo desde el sitio Web.
  • La base de datos AdventureWorks incluida en SQL Server 2005, que también está disponible en el sitio Web para programadores de SQL Server.
  • Los ejemplos de SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005). Estos ejemplos están incluidos en SQL Server 2005. Puede descargar la última versión de los ejemplos en el sitio Web para programadores de SQL Server.
  • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. Puede obtener .NET Framework SDK gratuitamente. Para obtener más información, vea Instalar .NET Framework SDK.

Generar el ejemplo

Si aún no ha creado un archivo de clave de nombre seguro, genere este archivo mediante las siguientes instrucciones.

Para generar un archivo de clave de nombre seguro

  1. Abra un símbolo del sistema de Microsoft Visual Studio 2005. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK 2.0 y, a continuación, haga clic en Símbolo del sistema de SDK.

    -- O bien --

    Abra un símbolo del sistema de Microsoft .NET Framework. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK 2.0 y, a continuación, haga clic en Símbolo del sistema de SDK.

  2. Use el comando de cambio de directorio (CD) para cambiar el directorio actual a la carpeta donde están instalados los ejemplos.

    [!NOTA] para determinar la carpeta donde se encuentran los ejemplos, haga clic en el botón Inicio, seleccione Todos los programas, Microsoft SQL Server, Documentación y tutoriales y, a continuación, haga clic en el directorio Ejemplos. Si se usó la ubicación de instalación predeterminada, los ejemplos se encontrarán en <unidadDeSistema>:\Archivos de programa\Microsoft SQL Server\100\Ejemplos.

  3. En el símbolo del sistema, ejecute el comando siguiente para generar el archivo de clave:

    sn -k SampleKey.snk

    ms160831.note(es-es,SQL.90).gifImportante:
    Para obtener más información acerca del par de claves de nombre seguro, vea el apartado sobre informes de seguridad de nombres seguros y seguridad en .NET Framework en el centro de desarrollo de .NET de MSDN.

Para generar el ejemplo ResultSet

  1. Compile el ejemplo mediante Visual Studio 2005 y la solución de Visual Studio proporcionada, o mediante Microsoft MSBuild, que se incluye en .NET Framework SDK 2.0. Ejecute comandos similares al siguiente en el símbolo del sistema:

    msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\ ResultSet.sln

  2. Asegúrese de que la base de datos AdventureWorks esté instalada.

  3. Si no instaló los ejemplos de SQL Server Database Engine (Motor de base de datos de SQL Server) en la ubicación predeterminada, modifique la ruta de acceso de la parte CREATE ASSEMBLY de la secuencia de comandos que se encuentra en Scripts\InstallCS.sql para que haga referencia a la ubicación donde se instalaron los ejemplos.

  4. Si no es administrador para la instancia de SQL Server que está usando, debe hacer que un administrador le otorgue permiso CreateAssembly para completar la instalación.

  5. Abra el archivo scripts\installCS.sql o scripts\installVB.sql, dependiendo de si ha compilado el proyecto de Visual C# o el proyecto de Visual Basic, en SQL Server Management Studio. Ejecute la secuencia de comandos que contiene el archivo o ejecute un comando similar al siguiente en una ventana del símbolo del sistema:

    sqlcmd -E -I -i Scripts\InstallCS.sql

Ejecutar el ejemplo

Para ejecutar el ejemplo ResultSet

  1. Abra el archivo scripts\test.sql en Management Studio y ejecute la secuencia de comandos que contiene el archivo, o bien, ejecute el siguiente comando en una ventana del símbolo del sistema:

    sqlcmd -E -I -i Scripts\test.sql

Eliminar el ejemplo

Para eliminar el ejemplo ResultSet

  1. Abra el archivo scripts\cleanup.sql en SQL Server Management Studio y ejecute la secuencia de comandos que contiene. O bien, ejecute el comando siguiente en una ventana del símbolo del sistema:

    sqlcmd -E -I -i Scripts\cleanup.sql

Comentarios

El CLR para SQL Server 2005 o SQL Server Express debe estar habilitado para que este ejemplo funcione correctamente.

Los ejemplos se proporcionan exclusivamente con fines formativos. No se han diseñado para utilizarse en un entorno de producción y no se han probado en ningún entorno de este tipo. Microsoft no ofrece soporte técnico para estos ejemplos. Las aplicaciones y los ensamblados de ejemplo no se deben conectar ni usar con la base de datos de SQL Server de producción ni con el servidor de informes sin el permiso del administrador del sistema.

Vea también

Otros recursos

Allowing Partially Trusted Callers

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido modificado:
  • Se cambiaron las instrucciones para generar un archivo de clave, incluidos el nombre y la ubicación del archivo.

17 de julio de 2006

Contenido agregado:
  • Se ha agregado contenido que describe problemas de seguridad.