没有'db_datawriter'权限,可以在SQL 2008中使用SqlBulkCopy吗?

security sqlbulkcopy sql-server sql-server-2008

我想限制我的数据库可能只使用存储过程的访问方式。除System.Data.SqlClient.SqlBulkCopy外,一切正常。我只在一个类中使用它来进行大量数据导入。

有可能避免这个问题吗?

我在调用SqlBulkCopy之前尝试授予权限,并在以下情况后将其删除:

EXEC [db_mod].[sys].[sp_addrolemember] N'db_datawriter', N'my_user'
EXEC [db_mod].[sys].[sp_droprolemember] N'db_datawriter', N'my_user'

但这种方法引发了一个错误:

用户无权执行此操作。

我正在同一个用户下执行它。我怎样才能允许我需要的东西?

热门答案

尝试sp_addrolemember()后描述的错误与当前用户没有必要的权限来更改帐户和安全设置有关。

关于运行SqlBulkCopy,它需要写权限,而db_datawriter角色是提供这些权限的便捷方式,但也许你可以考虑替代方案。例如,您可以修改与此特定数据库/表关联的安全设置,而不是增加(如果只是临时)当前帐户的安全权限。

更改“securables”(如数据库对象)的安全设置也需要一些管理权限,但这些权限可能与数据库所有权相关联,因此即使更改帐户的权限不可用,也可以使用这些权限。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因