0

我想将我的数据库可能的访问方式限制为仅使用存储过程。一切正常,除了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'

但这种方法会引发错误:

用户无权执行此操作。

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

4

1 回答 1

3

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

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

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

于 2009-10-24T23:51:48.173 回答