USO [maestro] GO -si no existe (SELECT * FROM syslogins donde LoginName = 'reemplazar con el nombre de sesión') - CREATE LOGIN [reemplazar con el nombre de sesión] DESDE WINDOWS cON DEFAULT_DATABASE = [maestro] --ir DECLARE @SQL VARCHAR (MAX) DECLARE @DatabaseName VARCHAR (255)
DECLARE CURSOR crFetch PARA NOMBRE --Seleccionar DE SYSDATABASES DONDE nombre en - ('maestro', 'modelo', 'tempdb', 'msdb', 'distribución')
SELECT NOMBRE DE SYS.Bases de datos donde nombre no en (, 'modelo' 'master', 'tempdb', 'msdb', 'distribución')
OPEN crFetch FETCH DESPUÉS de crFetch EN @DatabaseName
WHILE @@ FETCH_STATUS < > -1 COMENZAR
SET @SQL =
'USO [' + @DatabaseName + ']' + 'si no existe (seleccione el nombre desde sysusers donde name =' + '' '' + ' reemplace con Nombre de inicio de sesión '+' '' '+') '+ ' CREAR USUARIO [r eplace con Nombre de usuario] PARA INICIAR SESIÓN [reemplazar con Nombre de inicio de sesión] '+ ' EXEC sp_addrolemember N '+' '' '+' db_ETL '+' '' '+', N '+' '' '+' reemplazar con Inicio de sesión nombre de '+ ''' '+' '
-' sp_addrolemember EXEC n '+ '' '' + 'db_datareader' + '' '' +', N '+ '' '' +' reemplazar con Nombre de inicio de sesión '+' '' '+ -' si no existe (seleccione el nombre de sysusers donde name = '+' '' '+' db_executor '+' '' '+' y issqlrole = 1) '+ - -'create ROLE db_executor '+' '+ -' GRANT EJECUTAR A db_executor '+' '+ -' EXEC sp_addrolemember N '+' '' '+' db_executor '+' '' '+', N ' + '' '' + 'reemplazar con Nombre de inicio de sesión' + '' '' + '
--print @SQL
EXEC (@SQL)
FETCH DESPUÉS de crFetch EN @DatabaseName FIN
crFetch CERRAR DEALLOCATE crFetch
Será el usuario de forma automática obtener acceso de lectura después de ejecutar que ? – Greg
Bueno, también deberá otorgar algunos derechos, pero tendrán acceso DB – gbn
¿Cómo puedo automatizar la concesión de derechos de lectura a las tablas? De lo contrario, estoy un poco de vuelta donde comencé. – Greg