使用.NET的SqlBulkCopy,我需要在SQL Server 2008中为用户提供哪些权限?
答案 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