哪个权利授予用户在SQL 2008中授予自己另一项权利的权利?

时间:2009-10-26 10:34:08

标签: sql-server security sql-server-2008 sqlbulkcopy

我需要在执行db_datawriter之前授予SqlBulkCopy并在之后删除它:

try
{
   "EXEC [db_mod].[sys].[sp_addrolemember] N'db_datawriter', N'my_user'" // via SqlCommand
   bulk.WriteToServer(table);
}
finally
{
   "EXEC [db_mod].[sys].[sp_droprolemember] N'db_datawriter', N'my_user'" // via another SqlCommand
}

但是我收到了一个错误:

  

用户无权访问   执行此操作。

我该如何解决?

3 个答案:

答案 0 :(得分:1)

尝试使用GRANTREVOKE

答案 1 :(得分:1)

仅仅将运行SqlBulkCopy的用户(仅将数据插入到一个临时登台表中)的权限仅仅授予该单个表的完全权限会不会更容易?

类似的东西:

GRANT ALL ON (temporaryTable) TO my_user

这应该足以执行SqlBulkCopy操作。

为了运行GRANT命令,运行该命令的用户必须具有这样做的必要权限 - 请参阅有关该主题的SQL联机丛书(GRANT (Transact-SQL))。

马克

答案 2 :(得分:1)

MSDN sp_addrolemember告诉您需要哪些权利......

  • db_owner固定数据库角色的成员资格。
  • db_securityadmin固定数据库角色的成员资格。
  • 拥有该角色的角色的成员资格。
  • 对角色的ALTER权限

实际上,您需要处于db_securityadmin角色。

但是,为什么不直接通过GRANT保留INSERT / UPDATE权限?授予自己权利的权利意味着不需要任何更多权利的足够的特权......