在SQL Server 2008中使用SqlBulkCopy需要什么权限?

时间:2009-03-17 17:38:45

标签: .net sql-server ado.net

使用.NET的SqlBulkCopy,我需要在SQL Server 2008中为用户提供哪些权限?

4 个答案:

答案 0 :(得分:20)

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

bcp out操作需要源表的SELECT权限。

运行中的bcp最低限度要求目标表上的SELECT / INSERT权限。此外,如果满足以下任何条件,则需要ALTER TABLE权限:

  • 存在约束,未指定CHECK_CONSTRAINTS提示。 ms162802.note(EN-US,SQL.100).gifNote: 禁用约束是默认行为。要显式启用约束,请将-h选项与CHECK_CONSTRAINTS提示一起使用。

  • 存在触发器且未指定FIRE_TRIGGER提示。 ms162802.note(EN-US,SQL.100).gifNote: 默认情况下,不会触发触发器。要明确触发触发器,请将-h选项与FIRE_TRIGGERS提示一起使用。

  • 使用-E选项从数据文件中导入标识值。

ms162802.note(EN-US,SQL.100).gifNote: 在目标表上需要ALTER TABLE权限是SQL Server 2005中的新增功能。如果用户帐户缺少目标表的ALTER表权限,则此新要求可能会导致不强制执行触发器和约束检查的bcp脚本失败。

答案 1 :(得分:7)

从.net:

指定这些提示
var bulkCopy = new SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
        SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints);

答案 2 :(得分:2)

只有SELECT / INSERT perms需要SqlBulkCopy类才能成功执行。该类针对目标SQL Server表发出INSERT BULK语句。今天在我们的一个开发服务器上验证了这一点。

答案 3 :(得分:0)

有一个允许BULK INSERT命令的bulkadmin角色。 http://msdn.microsoft.com/en-us/library/ms189934(SQL.90).aspx