Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/10/2009, 16:26
Avatar de royrojas
royrojas
 
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 20 años
Puntos: 3
Respuesta: No ver databases de otros usuarios

si se puede. aqui está el codigo

Código:
Begin 

Declare @dsql varchar(500) = ''
Declare @Username varchar(20) = 'nombre_usuario'
Declare @password varchar(20) = 'clave'
Declare @DBName varchar(20) = 'base_datos'

IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = @Username)

Begin

Set @dsql ='create login ' + @Username + ' with password = N'''+ REPLACE(@password, '''', '''''') + ''', DEFAULT_DATABASE=' + QUOTENAME(@DBName) + ', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'

execute (@dsql)

set @dsql = 'use master; GRANT CONNECT SQL TO ' + QUOTENAME(@Username)

execute( @dsql )

End

--Deshabilita la posibilidad de ver otra base de datos que no sea maste tempdb o la propia

Set @dsql = 'use master; deny VIEW any DATABASE to ' + @Username

--Print @dsql

execute (@dsql)

End

--Agrega el usuario como dbo a la base de datos

Set @dsql = @DBName + '.dbo.sp_changedbowner ' + @Username

--Print @dsql

execute (@dsql)

codigo esta probado y ya se utilizo en produccion.
__________________
roy rojas
Programación en Español: DotNetcr.com

Última edición por royrojas; 16/10/2009 a las 16:31