0

db_datawriter実行前に付与し、実行SqlBulkCopy後に削除する必要があります。

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
}

しかし、私はエラーが発生しています:

ユーザーには、このアクションを実行する権限がありません。

どうすれば修正できますか?

4

3 に答える 3

1

SqlBulkCopy (ちょうど 1 つの一時ステージング テーブルにデータを挿入する) を実行するユーザーに、その 1 つのテーブルのみに対する完全な権限を付与する方が簡単ではないでしょうか?

何かのようなもの:

GRANT ALL ON (temporaryTable) TO my_user

SqlBulkCopy 操作を実行するには、これで十分です。

コマンドを実行するには、そのGRANTコマンドを実行するユーザーが必要な権限を持っている必要があります。そのトピックについては、SQL Books Online を参照してください ( GRANT (Transact-SQL))。

マルク

于 2009-10-26T11:25:56.233 に答える
1

MSDN sp_addrolememberは、必要な権限を教えてくれます...

  • db_owner 固定データベース ロールのメンバーシップ。
  • db_securityadmin 固定データベース ロールのメンバーシップ。
  • ロールを所有するロールのメンバーシップ。
  • ロールに対する ALTER 権限

実際には、db_securityadmin ロールである必要があります。

ただし、GRANT を介して INSERT/UPDATE 権限を保持しないのはなぜですか? 自分に権利を付与する権利は、それ以上の権利を必要としない十分な特権を意味します...

于 2009-10-27T19:43:21.833 に答える
1

GRANTREVOKEを使用してみてください。

于 2009-10-26T10:36:51.643 に答える