SQL Server 2005 otorga fácilmente la selección a todas las tablas y / o vistas en una base de datos

La concesión de Select a todas las tablas para un inicio de sesión puede ser un proceso extremadamente doloroso y largo. Utilizar SQL Server Management Studio para realizar esto significa ir de tabla en tabla y marcar la casilla de verificación Seleccionar para cada tabla individual, esto hace que sea una verdadera pesadilla si está trabajando con cientos de tablas. Puede hacer esto en segundos en lugar de horas usando la ventana de Consulta. Así es cómo:


1. Abrir SQL Server Management Studio.

2. Conectar al servidor deseado.

3. Haga clic en el Nueva consulta botón.

4. Seleccione la base de datos deseada de la lista desplegable en la barra de herramientas.

5. Para otorgar Seleccionar a todas las tablas en la base de datos, copie y pegue lo siguiente en su ventana de Consulta:
DECLARAR @login varchar (50)
SET @login = 'loginname'

DECLARE @tables TABLE (ROWID int IDENTITY (1,1), SQLSTR varchar (500))
Insertar en @tables
SELECCIONE 'CONCEDER SELECCIONAR' + NOMBRE + 'A' [correo electrónico protegido]
DE sysobjects
DONDE TIPO = 'U'
Y NOMBRE NO ME GUSTA 'SYNC%'

DECLARAR @rowid int, @sqlstr varchar (500)
SET @rowid = 0
SET @sqlstr = "
DECLARAR grant_tbl_cursor CURSOR PARA
SELECCIONE ROWID, SQLSTR
DESDE @tables
ORDEN DE ROWID
ABIERTO grant_tbl_cursor
FETCH NEXT FROM grant_tbl_cursor
INTO @ rowid, @ sqlstr
WHILE @@ FETCH_STATUS = 0
EMPEZAR
EJECUTAR (@sqlstr)
FETCH NEXT FROM grant_tbl_cursor
INTO @ rowid, @ sqlstr
FIN
CERRAR grant_tbl_cursor
DEALLOCATE grant_tbl_cursor

6. En la segunda línea de la consulta pegada, cambiar nombre de inicio de sesión al inicio de sesión que desea otorgar Seleccionar a todas las tablas.

7. Ejecutar la consulta.

Para otorgar Seleccionar a todas las vistas en la base de datos, siga los pasos anteriores pero use lo siguiente:
DECLARAR @login varchar (50)
SET @login = 'loginname'

DECLARE @views TABLE (ROWID int IDENTITY (1,1), SQLSTR varchar (500))
Insertar en @views
SELECCIONE 'CONCEDER SELECCIONAR' + NOMBRE + 'A' [correo electrónico protegido]
DE sysobjects
DONDE TIPO = 'V'
SET @rowid = 0
SET @sqlstr = "
DECLARAR grant_vw_cursor CURSOR PARA
SELECCIONE ROWID, SQLSTR
DE @views
ORDEN DE ROWID
ABIERTO grant_vw_cursor
FETCH NEXT FROM grant_vw_cursor
INTO @ rowid, @ sqlstr
WHILE @@ FETCH_STATUS = 0
EMPEZAR
EJECUTAR (@sqlstr)
FETCH NEXT FROM grant_vw_cursor
INTO @ rowid, @ sqlstr
FIN
CERRAR grant_vw_cursor
DEALLOCATE grant_vw_cursor