Сохранение GRANT'OV

akorolev10
Дата: 19.09.2000 06:39:40
Подскажите как сохранить все настроенные grant'ы на базу данных.
Михаил Курков
Дата: 19.09.2000 13:55:08
Могу предложить процедуру копирования GRANTs
Следующий код копирует права группы SKLADRW (можно заменить другим именем пользователя)
пользователю ANYA

Declare @UName varchar(30),@OName varchar(30),@ACTION varchar(30),@S varchar(255)

Declare Crs CURSOR FOR
select UNAME=u.Name,ONAME=o.Name,
ACTION=CASE p.Action
WHEN 26 THEN 'REFERENCES'
when 193 THEN 'SELECT'
when 195 THEN 'INSERT'
when 196 then 'DELETE'
when 197 then 'UPDATE'
when 198 then 'CREATE TABLE'
when 203 then 'CREATE DATABASE'
when 207 then 'CREATE VIEW'
when 222 then 'CREATE PROCEDURE'
when 224 then 'EXECUTE'
when 228 then 'DUMP DATABASE'
when 233 then 'CREATE DEFAULT'
when 235 then 'DUMP TRANSACTION'
when 236 then 'CREATE RULE'
END
from SysProtects p, SysUsers u, sysObjects o
where p.uid=u.uid and o.Id=p.Id and u.Name='SKLADRW' --SKLADRW - группа чьи GRANTы копируем

Open Crs
while 0 = 0
begin
FETCH Crs INTO @UName,@ONAME,@ACTION
if @@Fetch_Status <> 0 break
select @S='GRANT '+@ACTION+' ON dbo.'+LTrim(RTrim(@OName))+' TO ANYA'
EXEC(@S)
end
Close Crs
Deallocate Crs
Ольга
Дата: 27.09.2000 08:19:50
Проще всего сгенерировать скрипт, удалив после этого из текста скрипта удаление и создание объектов. Естественно, при генерации скрипта нужно поставить галочку "Script Object-Level Permissions" для 7.0 или просто "Permissions" для 6.5.
В принципе, можно сгенерировать скрипт и самому, а не с помощью Enterprise... Через системные таблицы, как показано в предыдущем ответе, но, на мой взгляд, это более трудоемко.