Ich führe eine Masseneinfügung mit einem ADO.NET 2.0 SqlBulkCopy-Objekt aus einer C# -Methode in eine MS SQL 2005-Datenbank unter Verwendung eines Datenbankbenutzers mit eingeschränkten Berechtigungen durch. Wenn ich versuche, den Vorgang auszuführen, erhalte ich die Fehlermeldung:SqlBulkInsert - Wie Feuer Auslöser einstellen, Bedingungen prüfen?
Bulk-Kopie fehlgeschlagen. Der Benutzer verfügt nicht über die Berechtigung ALTER TABLE für die Tabelle 'theTable'. ALTE TABLE-Berechtigung wird auf der Zieltabelle eines Massenkopiervorgang erforderlich, wenn die Tabelle Trigger hat oder Einschränkungen überprüfen, aber
'FIRE_TRIGGERS'
oder'CHECK_CONSTRAINTS'
Bulk-Hinweise sind nicht als Optionen für den Massenkopier Befehl angegeben.
las ich eine Dokumentation und erstellt das Massenkopier Objekt mit dem Konstruktor, der mir solche Dinge angeben können:
SqlBulkCopy bc = new SqlBulkCopy(
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
SqlBulkCopyOptions.FireTriggers & SqlBulkCopyOptions.CheckConstraints);
Aber dies ändert nichts - ich bekomme die gleiche Fehlermeldung wie zuvor. Ich habe versucht, mit einigen anderen SqlBulkCopyOptions-Werten herumzuspielen, aber kein Glück. Ich dachte wirklich, dass das das Problem lösen würde, vermisse ich etwas?
Ich testete die Prozedur, nachdem ich meinem Benutzer ALTER in der Tabelle gewährt hatte, und der Vorgang war erfolgreich. Dies ist jedoch keine Option für meine Situation. nur
Fairer Anruf. Hoppla! – gbn
Ich wusste nicht, dass diese Optionen existieren, aber ein kreatives Suchen hat mich hierher gebracht. Mein Problem mit SqlBulkCopy wurde in einer Tabelle mit Triggern * gelöst, ohne dass ich meine SQL-Login-ALTER TABLE-Berechtigungen erhalten musste! – madannes