日期:2014-05-18  浏览次数:20433 次

给用户分配收缩日志的权限
自己编写了一个收缩日志的存储过程,里面用到了
BACKUP LOG '+@dbname+' WITH NO_LOG 和 DBCC SHRINKFILE(N'''+@logName+''',0,TRUNCATEONLY)
其中@dbname=db_name();select top 1 @logName=[name] from sysFiles where charIndex('.ldf',fileName)>0  

现在有个普通用户,这个用户只有对部分表进行操作的权限。

问题:怎么为这个普通用户赋予执行收缩日志存储过程的权限,也就是怎么把BACKUP LOG和DBCC SHRINKFILE的权限给它。
环境:MS SQL SERVER 2005

------解决方案--------------------
SQL code
GRANT IMPERSONATE ON USER:: dbo TO USER_NAME_A
GO
create procedure test
as
begin
 EXECUTE AS USER='dbo'
BACKUP LOG '+@dbname+' WITH NO_LOG 和 DBCC SHRINKFILE(N'''+@logName+''',0,TRUNCATEONLY)
......
end
GO
GRANT EXECUTE ON TEST TO USER_NAME_A
GO