Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What permission do I need to use SqlBulkCopy in SQL Server 2008?

Tags:

Using .NET's SqlBulkCopy, what permission do I need to give to the user in SQL Server 2008?

like image 729
Jonathan Allen Avatar asked Mar 17 '09 17:03

Jonathan Allen


2 Answers

http://msdn.microsoft.com/en-us/library/ms162802.aspx

A bcp out operation requires SELECT permission on the source table.

A bcp in operation minimally requires SELECT/INSERT permissions on the target table. In addition, ALTER TABLE permission is required if any of the following is true:

  • Constraints exist and the CHECK_CONSTRAINTS hint is not specified. ms162802.note(en-us,SQL.100).gifNote: Disabling constraints is the default behavior. To enable constraints explicitly, use the -h option with the CHECK_CONSTRAINTS hint.

  • Triggers exist and the FIRE_TRIGGER hint is not specified. ms162802.note(en-us,SQL.100).gifNote: By default, triggers are not fired. To fire triggers explicitly, use the -h option with the FIRE_TRIGGERS hint.

  • You use the -E option to import identity values from a data file.

Note: Requiring ALTER TABLE permission on the target table was new in SQL Server 2005. This new requirement might cause bcp scripts that do not enforce triggers and constraint checks to fail if the user account lacks ALTER table permissions for the target table.

like image 144
Sam Avatar answered Sep 24 '22 18:09

Sam


To specify these hints from .net:

var bulkCopy = new SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],         SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints); 
like image 43
dan Avatar answered Sep 20 '22 18:09

dan