在SQL Server 2008中,我需要哪些权限才能使用SqlBulkCopy?

22
使用.NET的SqlBulkCopy,在SQL Server 2008中,我需要给用户什么权限?
4个回答

21

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

操作需要源表的 SELECT 权限。 bcp in 操作至少需要目标表的 SELECT/INSERT 权限。此外,如果以下任一条件成立,则需要 ALTER TABLE 权限:
  • 存在约束且未指定 CHECK_CONSTRAINTS 提示。 ms162802.note(en-us,SQL.100).gifNote: 禁用约束是默认行为。要显式启用约束,请使用带有 CHECK_CONSTRAINTS 提示的 -h 选项。

  • 存在触发器且未指定 FIRE_TRIGGER 提示。 ms162802.note(en-us,SQL.100).gifNote: 默认情况下,不会触发触发器。要显式触发触发器,请使用带有 FIRE_TRIGGERS 提示的 -h 选项。

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

注意: 在 SQL Server 2005 中,对目标表需要 ALTER TABLE 权限是新要求。如果用户账户缺少目标表的 ALTER table 权限,则此新要求可能导致未执行触发器和约束检查的 bcp 脚本失败。


4
在 .Net 中使用:var bulkCopy = new SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"], SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints); - dan

10

从 .NET 中指定这些提示:

var bulkCopy = new SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
        SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints);

2

只需要SELECT/INSERT权限,SqlBulkCopy类就可以成功执行。该类会对目标SQL Server表发出INSERT BULK语句。今天我们在其中一个开发服务器上验证了这一点。


BULK INSERT 的文档链接:https://learn.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql - Thymine

0

太多了,我真的希望将此用户限制在单个表中。 - Jonathan Allen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接