Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/07/2010, 17:38
Avatar de iislas
iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Establecer permisos de visualizacion de bases

Alguna vez dije que ESO NO SE PODIA, y me callaron la bocota:

Código SQL:
Ver original
  1. BEGIN
  2.     DECLARE @SQLString nvarchar(500) = ''
  3.     DECLARE @Username VARCHAR(20) = 'nombre_usuario'
  4.     DECLARE @password VARCHAR(20) = 'clave'
  5.     DECLARE @DBName VARCHAR(20) = 'base_datos'
  6.  
  7.     -- Si no existe el usuario lo doy de alta
  8.     IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = @Username)
  9.         BEGIN
  10.             SET @SQLString = N'create login ' + @Username + ' with password = N'''+ REPLACE(@password, '''', '''''') + ''', DEFAULT_DATABASE=' + QUOTENAME(@DBName) + ', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
  11.             exe sp_executesql @SQLString
  12.             SET @@SQLString  = N'use master; GRANT CONNECT SQL TO ' + QUOTENAME(@Username)
  13.             exe sp_executesql @SQLString
  14.         END
  15.  
  16.     --Deshabilita la posibilidad de ver otra base de datos que no sea master, tempdb o la propia
  17.     SET sp_executesql = N'use master; deny VIEW any DATABASE to ' + @Username
  18.     exe sp_executesql @SQLString
  19. END
  20.  
  21. --Agrega el usuario como dbo a la base de datos
  22. SET @SQLString = @DBName + N'.dbo.sp_changedbowner ' + @Username
  23. exe sp_executesql @SQLString