Impersonation (ejemplo)

Actualizado: 5 de diciembre de 2005

El ejemplo Impersonation muestra cómo usar la suplantación para usar las credenciales pasadas desde el cliente para obtener acceso a recursos protegidos del sistema operativo, tales como archivos, cuando se usa seguridad integrada. De forma predeterminada, al obtener acceso a estos tipos de recurso se usan las credenciales de la cuenta en la cual se ejecuta SQL Server.

[!NOTA] Esta forma de suplantación no afecta al acceso a los recursos protegidos de SQL Server, como las tablas, a menos que realice el acceso a los datos de otro servidor de base de datos (SQL Server o algún otro tipo de servidor de base de datos) a través de ADO.NET. En ese caso, debería usar la suplantación durante la ejecución del método Open en la conexión para pasar las credenciales del cliente al servidor remoto. La suplantación no es necesaria durante las otras llamadas a ADO.NET.

Este ejemplo también muestra cómo obtener acceso a la información sobre los archivos que contiene un directorio usando una función con valores de tabla de Common Language Runtime (CLR).

Directorio de instalación: unidad:\Archivos de programa\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\mpersonation\

Escenario

Jane es programadora para Adventure Works Cycles. Desea obtener acceso a información acerca de los archivos de un directorio del servidor usando las credenciales pasadas por el cliente.

Lenguajes

Transact-SQL, Visual C# y Visual Basic.

Características

El ejemplo Impersonation usa las siguientes características de SQL Server:

Área de aplicación Características

Global

CLR, Seguridad

Requisitos previos

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

  • Microsoft SQL Server 2005 o bien Microsoft 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 sin cargo. Vea Instalar .NET Framework SDK.

Generar el ejemplo

Si todavía no ha creado el archivo de clave de nombre seguro ExternalSampleKey.snk, siga estas instrucciones para generarlo.

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 Visual Studio 2005, Visual Studio Tools y, a continuación, haga clic en Visual Studio 2005 Command Prompt.

    O bien

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

  2. En el símbolo del sistema, use el comando de cambio de directorio (CD) para cambiar la carpeta actual de la ventana del símbolo del sistema a la carpeta Samples.

    [!NOTA] Para determinar la carpeta donde se encuentran los ejemplos, haga clic en Inicio, seleccione Todos los programas, Microsoft SQL Server 2005, Documentation and Tutorials y, a continuación, haga clic en Samples Directory. Si se usó la ubicación de instalación predeterminada, los ejemplos se encuentran en <system_drive>:\Archivos de programa\Microsoft SQL Server\90\Samples.

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

    sn -k ExternalSampleKey.snk

    ms160785.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 Impersonation

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

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

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

  3. Si no instaló los ejemplos de motor de SQL Server en la ubicación predeterminada, modifique la ruta en la sección CREATE ASSEMBLY de la secuencia de comandos en Scripts\InstallCS.sql y Scripts\InstallVB.sql para hacer 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 de Visual Basic en Microsoft SQL Server Management Studio. Ejecute la secuencia de comandos que contiene el archivo o ejecute un comando similar al siguiente en el símbolo del sistema:

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

Ejecutar el ejemplo

Para ejecutar el ejemplo Impersonation

  1. En la carpeta Mis Documentos, cree una carpeta llamada Test.

  2. Con el Bloc de notas, cree un archivo de texto vacío en esa carpeta.

  3. Ajuste la seguridad de la carpeta usando el cuadro de diálogo Propiedades en el Explorador de Windows.

    1. Use el botón Avanzadas de la ficha Seguridad para deshabilitar la herencia de las configuraciones de seguridad de la carpeta de la carpeta primaria.
    2. Use la opción Copiar para copiar la configuración de seguridad de la carpeta primaria.
    3. Agréguese como usuario con permisos totales sobre la carpeta.
    4. Elimine todos los demás usuarios.
  4. Abra el archivo scripts\test.sql en Management Studio o en el Bloc de notas. Modifique el archivo de modo que, en lugar de llamar al método GetEnvironmentVariable en la instrucción SELECT @TestDir, especifique una cadena constante para el valor de la variable @TestDir. El código debe ser similar al siguiente:

    SELECT @TestDir = 'C:\Documents and Settings\nombre de usuario\My Documents\Test\'

    Reemplace nombre de usuario por el nombre de usuario real.

Ejecute la secuencia de comandos en Management Studio o guarde el archivo modificado en el Bloc de notas y, a continuación, ejecute el comando siguiente en el símbolo del sistema:

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

Eliminar el ejemplo

Para eliminar el ejemplo Impersonation

  1. Abra el archivo scripts\cleanup.sql en Management Studio. Ejecute la secuencia de comandos que contiene el archivo o ejecute el comando siguiente en el 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

The SqlContext Object

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.