尝试创建GRANT权限脚本

tca*_*005 0 sql-server sql-server-2005

我试图为数据库创建一个GRANT脚本.

DB不能使用任何内置角色,因此我需要为存储过程重新创建db_reader,db_writer和EXEC到分配给此服务帐户的GRANT脚本中.

我试图自动化这个,而不是查看数据库中的每个项目并手动创建它.

到目前为止我有这个:

/* USER_TABLE */
select   'GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'U' order by  name;

/* INTERNAL_TABLE */
select   'GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'IT' order by  name;

/* VIEW */
select   'GRANT SELECT ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'V' order by  name;

/* SQL_STORED_PROCEDURE */
select   'GRANT EXECUTE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'P' order by  name;

/* SQL_TABLE_VALUED_FUNCTION */
select   'GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'TF' order by  name;

/* SQL_SCALAR_FUNCTION */
select   'GRANT EXECUTE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'FN' order by  name;
Run Code Online (Sandbox Code Playgroud)

但是,我不确定所有其他项目需要什么权利,即:SERVICE_QUEUE,SQL_TRIGGER等(见下文)另外,如果上述内容是正确的.

select  DISTINCT(type_desc), type as a from sys.objects WHERE type <> 'S';
Run Code Online (Sandbox Code Playgroud)

- 那些我不相信自己需要的人

  • DEFAULT_CONSTRAINT(D)
  • FOREIGN_KEY_CONSTRAINT(F)
  • PRIMARY_KEY_CONSTRAINT(PK)
  • SERVICE_QUEUE(SQ)
  • UNIQUE_CONSTRAINT(UQ)
  • SQL_TRIGGER(TR)

- 我认为我需要的人

  • USER_TABLE(U)
  • INTERNAL_TABLE(IT)
  • 查看(V)
  • SQL_STORED_PROCEDURE(P)
  • SQL_TABLE_VALUED_FUNCTION(TF)
  • SQL_SCALAR_FUNCTION(FN)

提前致谢!

小智 5

在我看来,你必须做到以下几点:

create role [DatabaseUser]
go
grant select to [DatabaseUser]
grant insert to [DatabaseUser]
grant update to [DatabaseUser]
grant delete to [DatabaseUser]
grant execute to [DatabaseUser]
go
Run Code Online (Sandbox Code Playgroud)

然后,对于您想要授予权限的每个用户,就这样做

exec sp_addrolemember 'DatabaseUser', 'DOMAIN\user'
Run Code Online (Sandbox Code Playgroud)

您应该避免向对象和用户添加显式权限.当您使用数据库角色和模式来安排所需的安全性时,您将使您的生活更轻松.您可以查看我的博客,有关于此主题的更多信息.

问候

彼得·