SQL Server 2005 consente di selezionare facilmente tutte le tabelle e / o le viste in un database

La concessione di Seleziona a tutte le tabelle per un accesso può essere un processo estremamente doloroso e lungo. Utilizzare SQL Server Management Studio per eseguire questo significa andare tabella per tabella e controllare la casella di controllo Seleziona per ogni singola tabella, questo diventa un vero incubo se si lavora con centinaia di tabelle. Puoi farlo in pochi secondi contro ore usando la finestra Query. Ecco come:


1. Apri SQL Server Management Studio.

2. Connettersi al server desiderato.

3. Fare clic sul Nuova query pulsante.

4. Selezionare il database desiderato dal menu a discesa nella barra degli strumenti.

5. Per concedere Seleziona a tutte le tabelle nel database, copia e incolla quanto segue nella finestra Query:
DECLARE @login varchar (50)
SET @login = 'loginname'

DECLARE @tables TABLE (ROWID int IDENTITY (1,1), SQLSTR varchar (500))
INSERISCI IN @tables
SELEZIONA 'SELEZIONE GRAN ON' + NOME + 'A' [protetto da email]
DA sysobjects
WHERE TYPE = 'U'
E NOME NON MI PIACE 'SYNC%'

DICHIARARE @rowid int, @sqlstr varchar (500)
SET @rowid = 0
SET @sqlstr = "
DICHIARARE grant_tbl_cursor CURSOR FOR
SELEZIONA ROWID, SQLSTR
DA @tables
ORDINA PER ROWID
OPEN grant_tbl_cursor
FETCH NEXT FROM grant_tbl_cursor
INTO @ rowid, @ sqlstr
WHILE @@ FETCH_STATUS = 0
INIZIO
ESEGUI (@sqlstr)
FETCH NEXT FROM grant_tbl_cursor
INTO @ rowid, @ sqlstr
FINE
CHIUDI grant_tbl_cursor
DEALLOCARE grant_tbl_cursor

6. Nella seconda riga della query incollata, cambia nome di login al login che desideri concedere Seleziona a tutte le tabelle.

7. Esegui la query.

Per concedere Seleziona a tutte le viste nel database, seguire i passaggi precedenti ma utilizzare quanto segue:
DECLARE @login varchar (50)
SET @login = 'loginname'

DECLARE @views TABLE (ROWID int IDENTITY (1,1), SQLSTR varchar (500))
INSERISCI IN @view
SELEZIONA 'SELEZIONE GRAN ON' + NOME + 'A' [protetto da email]
DA sysobjects
WHERE TYPE = 'V'
SET @rowid = 0
SET @sqlstr = "
DICHIARARE grant_vw_cursor CURSOR FOR
SELEZIONA ROWID, SQLSTR
Da @views
ORDINA PER ROWID
OPEN grant_vw_cursor
FETCH NEXT FROM grant_vw_cursor
INTO @ rowid, @ sqlstr
WHILE @@ FETCH_STATUS = 0
INIZIO
ESEGUI (@sqlstr)
FETCH NEXT FROM grant_vw_cursor
INTO @ rowid, @ sqlstr
FINE
CHIUDI grant_vw_cursor
DEALLOCARE grant_vw_cursor