0
请参考下面的SQL存储过程:如何授予访问权限以更改所有SQL表的权限?
ALTER PROCEDURE cspFieldAccess
@Tbl varchar(20),
@Fld varchar(20),
@Usr varchar(35),
@Dny varchar(5),
@All varchar(5)
AS
DECLARE @sql nvarchar(max)
IF @Dny = 'Y' and @All = 'Y'
set @sql='DENY UPDATE ON ['[email protected]+'] ('[email protected]+') TO [MCCOSKERS\ViewPoint Production Users]'
ELSE IF @Dny = 'Y' and @All = 'N'
set @sql='DENY UPDATE ON ['[email protected]+'] ('[email protected]+') TO ['[email protected]+']'
ELSE IF @Dny = 'N' and @All = 'Y'
set @sql='GRANT UPDATE ON ['[email protected]+'] ('[email protected]+') TO [MCCOSKERS\ViewPoint Production Users]'
ELSE IF @Dny = 'N' and @All = 'N'
set @sql='GRANT UPDATE ON ['[email protected]+'] ('[email protected]+') TO ['[email protected]+']'
exec sp_executesql @sql
我可以在SQL完美地执行此过程(如SA),但我想它在应用程序调用观构建软件工作。
基本上,该过程将允许用户指定用户,表和字段,然后拒绝对字段的更改访问。如果“@ALL参数为‘Y’,那么它将适用于所有用户。
当我运行这个从观点,我得到一个错误信息,说‘无法找到对象PREH'’。
FYI:“PREH”是输入到Viewpoint的表格
我假设发生此错误是因为我登录的用户没有权限拒绝PREH上的更新。访问用户所有表?
或者,是否有可能将过程作为“SA”执行,然后给予用户模拟权限我想要访问的用户可以这样做吗?