2010-07-07 3 views
10

Я хочу, чтобы группа пользователей имела доступ только для чтения ко всем таблицам и представлениям во всех базах данных на SQL Server (я использую SS2008). Я бы хотел, чтобы эти пользователи имели доступ только для чтения ко всем будущим таблицам и просмотру.Как предоставить пользователям доступ только для чтения ко всем базам данных

Как бы вы это определили?

ответ

11

добавить пользователя к db_datareader роли

пример

exec sp_addrolemember 'db_datareader',YourLogin 

Информация о db_datareader: http://msdn.microsoft.com/en-us/library/ms188629(SQL.90).aspx

+3

Это дает доступ только для чтения к одной базе данных, а не ко всем базам данных. Вам нужно будет сделать это для каждой базы данных. –

0

Вы просто должны иметь возможность добавлять пользователей в роли базы данных db_datareader в каждом из базы данных. Вы можете написать сценарий для прокрутки баз данных и сделать это за вас.

1
DECLARE @dbname VARCHAR(50) 
DECLARE @statement NVARCHAR(max) 
DECLARE db_cursor CURSOR 

LOCAL FAST_FORWARD 
FOR SELECT name FROM MASTER.dbo.sysdatabases OPEN db_cursor 
    FETCH NEXT FROM db_cursor INTO @dbname 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    /* This sentence will be executed to gran the privileges. */ 
    SELECT @statement = 'use ['[email protected]+']; '+'EXEC sp_addrolemember N''db_datareader'', N''userPeter'''; 
    EXEC sp_executesql @statement 
    FETCH NEXT FROM db_cursor INTO @dbname 
END 

В появившемся окне userPeter необходимо написать свое имя пользователя.

Смежные вопросы