権限が制限されたデータベース ユーザーを使用して、ADO.NET 2.0 SqlBulkCopy オブジェクトを C# メソッドから MS SQL 2005 データベースに一括挿入しています。操作を実行しようとすると、次のエラー メッセージが表示されます。
一括コピーに失敗しました。ユーザーには、テーブル 'theTable' に対する ALTER TABLE 権限がありません。
'FIRE_TRIGGERS'
テーブルにトリガーまたは チェック制約があるが'CHECK_CONSTRAINTS'
、一括コピー コマンドのオプションとして一括ヒントが指定されていない場合、一括コピー操作のターゲット テーブルには ALTER TABLE 権限が必要です。
いくつかのドキュメントを読み、そのようなことを指定できるコンストラクターで一括コピー オブジェクトを作成しました。
SqlBulkCopy bc = new SqlBulkCopy(
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
SqlBulkCopyOptions.FireTriggers & SqlBulkCopyOptions.CheckConstraints);
しかし、これは何も変更しません。以前と同じエラー メッセージが表示されます。他の SqlBulkCopyOptions 値のいくつかをいじってみましたが、うまくいきませんでした。これで問題が解決すると本当に思っていましたが、何か不足していますか?
ユーザーにテーブルの ALTER を許可した後に手順をテストしたところ、操作は成功しました。ただし、これは私の状況ではオプションではありません。