沒有'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
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow