2009-10-26 61 views
0

我需要在執行之前SqlBulkCopy授予db_datawriter之後將其刪除:哪一項權利授予用戶在SQL 2008中授予他人權利的權利?

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 
} 

,但我得到一個錯誤:

User does not have permission to perform this action.

我該如何解決呢?

回答

1

僅僅授予只在該單個表上運行SqlBulkCopy(將數據插入到恰好一個臨時登臺表中)完全權限的用戶是否更容易?

喜歡的東西:

GRANT ALL ON (temporaryTable) TO my_user 

這應該是足以完成SqlBulkCopy的操作。

爲了運行GRANT命令,運行該命令的用戶必須具有必要的權限才能執行此操作 - 請參閱該主題上的SQL聯機叢書(GRANT (Transact-SQL))。

馬克

1

MSDN sp_addrolemember告訴你需要什麼樣的權利?

  • 成員的db_owner固定數據庫角色。
  • db_securityadmin固定數據庫角色中的成員資格。
  • 擁有角色的角色中的成員資格。在角色
  • ALTER權限

實際上,你必須在db_securityadmin角色。

但是,爲什麼不通過GRANT來堅持INSERT/UPDATE權限呢?賦予自己權利的權利意味着不需要更多權利的特權......