2009-10-24 13 views
0

我想限制我的數據庫可能的訪問方式只使用存儲過程。一切工作正常,除了System.Data.SqlClient.SqlBulkCopy。我只在一個類中使用它來導入大量數據。是否有可能在SQL 2008中使用SqlBulkCopy而未經許可「db_datawriter」?

可以避免這個問題嗎?

我打過電話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' 

但這種做法會引發錯誤:

User does not have permission to perform this action.

我執行它同一個用戶下。我怎樣才能允許我需要的東西?

回答

3

在嘗試sp_addrolemember()後描述的錯誤與當前用戶沒有改變帳戶和安全設置的必要權限有關。

關於運行SqlBulkCopy,它需要寫權限,而db_datawriter角色是提供這些的一種便捷方式,但也許您可以考慮替代方案。例如,您可以修改與此特定數據庫/表關聯的安全設置,而不是增加(如果只是臨時性)當前帳戶的安全權限。

更改數據庫對象等「安全設置」的安全設置也需要一些管理權限,但這些權限可能與數據庫所有權相關聯,因此即使更改帳戶的權限不是。

相關問題