0

我需要db_datawriter在执行之前授予 aSqlBulkCopy并在之后将其删除:

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
}

但我收到一个错误:

用户无权执行此操作。

我该如何解决?

4

3 回答 3

1

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

就像是:

GRANT ALL ON (temporaryTable) TO my_user

这应该足以执行 SqlBulkCopy 操作。

为了运行该GRANT命令,运行该命令的用户必须具有执行此操作所需的权限 - 请参阅有关该主题的 SQL 联机丛书 ( GRANT (Transact-SQL))。

马克

于 2009-10-26T11:25:56.233 回答
1

尝试使用GRANTREVOKE

于 2009-10-26T10:36:51.643 回答
1

MSDN sp_addrolemember告诉你需要什么权限...

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

实际上,您需要具有 db_securityadmin 角色。

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

于 2009-10-27T19:43:21.833 回答