技术开发 频道

SQL Server 2005存储过程签名

  -- 这需要服务器级别的alter ANY LOGIN权限

  -- 和数据库级别的alter ANY USER权限 

create procedure sp_createPrincipal  
  
@name varchar(256),  
  
@password varchar(128)  
  
as  
  
declare @sqlcmd varchar(2000);      
  
begin tran;         
  
-- create login  
   set @sqlcmd =create login ’ + quotename(@name) +with password =+ quotename(@password, ’’’’);  
  
exec (@sqlcmd);  
  
if @@error <> 0      
  
begin      
  
rollback tran;  
  
print ’Cannot create login’  
  
return;  
  
end        
  
-- create user  
   set @sqlcmd =create user+ quotename(@name);  
  
exec (@sqlcmd);  
  
if @@error <> 0  
  
begin  
  
rollback tran;  
  
print ’Cannot create user’  
  
return;  
  
end           
  
commit tran;  
  
go  

  -- 调用这个存储过程

  -- 创建主体

sp_createPrincipal ’alice’, ’Apufe@))%’;  

  --我们需要让alice可以调用这个存储过程,创建新的主体,

  -- 但并不直接授予她权限(创建主体的权限,译者注)

grant execute on sp_createPrincipal to alice;  

  -- 目前 alice还不能创建主体

0
相关文章