您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

生成数据库角色权限

2025/12/4 8:51:20发布28次查看
use public_data go /****** object: storedprocedure [dbo].[p_copyuserpermission] script date: 01/19/2011 11:09:13 ******/ set ansi_nulls on go set quoted_identifier on go create procedure [dbo].[p_copyuserpermission] (@username sysname, @ne
use public_data
go
/****** object:  storedprocedure [dbo].[p_copyuserpermission]    script date: 01/19/2011 11:09:13 ******/
set ansi_nulls on
go
set quoted_identifier on
go
create procedure [dbo].[p_copyuserpermission]
(@username sysname,
@newusername sysname=null)
as
set nocount on
begin
if @newusername is null
set @newusername=@username
 if (select object_id('tempdb..#tt')) is not null
  drop table #tt
 create table #tt
 (owner sysname,
 object sysname,
 grantee sysname,
 grantor sysname,
 protecttype varchar(10),
 actionname varchar(20),
 columnname sysname
 )
  if (select object_id('tempdb..#t2')) is not null
  drop table #t2
 create table #t2
 (sql varchar(max)
 )
 declare @db sysname
 declare cu_listuserpermission cursor for
 select name from master..sysdatabases where name not like 'dbss%'
 and status4260872
 open cu_listuserpermission
 fetch next from cu_listuserpermission into @db
 while @@fetch_status=0
 begin
 begin try
 insert #tt execute sp_helprotect @username = @username
 insert #t2
select 'use '+@db
 union all
 select '
 if not exists(select * from sysusers where name='''+@newusername+''')'
  union all
 select 'begin'
  union all
  select ' create user ['+@newusername+'] for login ['+@newusername+'] with default_schema=[dbo]'
  union all
 select 'end '
  union all
  select
  distinct rtrim(protecttype) + ' ' + actionname + '' +
  case  object when '.' then '' else ' on ' + '['+owner+'].['+object+']' +
  case  when columnname in('(all+new)','(all)','(new)','.') then '' else '('+columnname+')' end end
  +' to ' + @newusername
 from #tt
union all
 select 'exec sp_addrolemember  ''' +roles.name+''','''+@newusername+''''
 from sysusers users, sysusers roles, sysmembers members
 where roles.uid = members.groupuid
 and roles.issqlrole = 1
 and users.uid = members.memberuid
 and users.name = @username
 end try
 begin catch
 end catch
 fetch next from cu_listuserpermission into @db
 end
 close cu_listuserpermission
 deallocate cu_listuserpermission
select * from #t2
end
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product