2011-01-25 22 views
7

Estoy configurando una computadora portátil para entrevistas de desarrollo listas para pruebas de codificación. Quiero crear una base de datos para cada candidato, pero mucho antes de la entrevista en sí. Mi preparación es la siguiente:Configurar una base de datos de SQL Server que solo sea visible para ciertos usuarios

  1. Iniciar sesión como administrador.
  2. Cree un usuario local de Windows para cada candidato.
  3. Cree una base de datos en la instancia local predeterminada de SQL Server para cada candidato (con su nombre en el nombre de la base de datos).

De modo que cuando inicio sesión en Windows como candidato, si abren SSMS solo pueden ver su propia base de datos en el Explorador de objetos.

Quiero hacerlo de esta manera, porque a menudo no hay suficiente tiempo entre entrevistas para respaldar/separar la base de datos del candidato anterior y crear la base de datos del siguiente candidato (la máquina se ralentiza, por lo que se desconecta/inicia sesión de nuevo, etc. lleva tiempo).

Esto es posible, y si es así, ¿cómo?

Muchas gracias de antemano.

Respuesta

5

Parece que hay una opción en SQL Server 2005+ que podría satisfacer sus necesidades aquí. Suena como si su requisito es que el usuario no vea las otras bases de datos en el Explorador de objetos.

How To Hide Databases in SQL Server destaca el permiso VIEW ANY DATABASE. Puede ser útil en esta situación donde la base de datos X debe ocultarse a todos los usuarios que no sean usuarios de Windows X.

This MSDN forum thread (see the bottom-most posts) sugiere que una combinación de negar la base de datos de vista a un usuario y otorgar autorización es una posible solución.

He replicado esto en una máquina de SQL Server 2008, pero utilicé la autenticación de SQL Server en esta prueba rápida. Funcionó como se describe: todos los DB se ocultaron del inicio de sesión, guarde el que se especifica a continuación.

USE <customersdatabase> 

ALTER AUTHORIZATION ON DATABASE::<customerdatabase> to <customerlogin> 

USE MASTER 

DENY VIEW ANY DATABASE TO <customerlogin> 
0

Inicie sesión en SSMS.

Haga clic en bases de datos, haga clic en la base de datos que ha creado.

Expanda la seguridad, haga clic en Usuarios y agregue el inicio de sesión de Windows a esta base de datos. Asegúrese de no agregarlo al servidor como un agujero.

Luego, sus candidatos pueden iniciar sesión con seguridad integrada y ver solo su base de datos o, al menos, solo pueden acceder a esa.

0

Personalmente me gustaría hacerlo de forma ligeramente diferente - no me gustaría configurar una cuenta de Windows por separado para cada candidato, en cambio, lo usaría sólo una cuenta de Windows y la configuración de un inicio de sesión de SQL para cada uno. Revoque el VIEW ANY DATABASE según la respuesta de p.campbell, y luego simplemente agregue cada inicio de sesión de SQL como usuario a su respectiva base de datos.

De esta manera puede hacer que la máquina inicie sesión a medida que llega cada candidato, todo lo que tienen que hacer es conectarse a la instancia de SQL utilizando la información de inicio de sesión de SQL que proporciona.

+0

Sí, pero luego tengo un problema diferente: cada candidato termina abriendo Visual Studio y obteniendo los proyectos de los candidatos anteriores visibles para ellos. Diferentes inicios de sesión de Windows los aíslan (y con NTFS ni siquiera pueden acceder a las carpetas de los documentos de los demás). –

+0

@Neil, ese es un buen punto, pero una simple secuencia de comandos por lotes puede solucionarlo. – slugster

+0

En realidad, no estoy de acuerdo. Un script por lotes no podrá asegurarse de que las listas MRU y la página de inicio VS2010, etc. estén todas "limpias" y no tengan referencia a proyectos anteriores. –

1

Con SQL Server, puede desconectar y adjuntar bases de datos. De modo que podría dejarlo conectado como candidatos normales e intermedios, simplemente separar la base de datos de candidatos anterior y adjuntar la siguiente.

Con el proyecto anterior de Visual Studio, puede comprimirlo con una contraseña.

Cuestiones relacionadas