触发器在 SQL Server 的 BulkCopy 中不起作用

Posted

技术标签:

【中文标题】触发器在 SQL Server 的 BulkCopy 中不起作用【英文标题】:Trigger not working in BulkCopy in Sql Server 【发布时间】:2013-10-07 08:49:06 【问题描述】:

我有一个应用程序,我通过它使用 SqlBulkCopy 将批量记录插入到表中。 我有一个触发器,它将添加到第一个表中的记录插入到另一个表中。

当我插入时,我已经用 C# 编写了 SqlBulkCopyOptions.FireTriggers,但它不适用于 Sql Server 2005。当使用 SqlServer2008 时,它工作正常。

在 Sql server 2005 中,每当将记录插入第一个表时,只有 INSERTED 行中的一条记录出现在第二个表中。

我可以单独使用 Sql Server 进行管理吗?

【问题讨论】:

触发器是否被禁用?您是否确认它“正常”工作? 【参考方案1】:

这里的一个选项是批量复制到临时表(第二个简单表 - 不是主要数据模型的一部分;通常没有索引/约束/触发器/等),然后发出SELECT-基于INSERT 将临时表中的数据获取到主事务表中。这使您可以获得SqlBulkCopy 的带宽优势,但仍然具有最终INSERT 的完整SQL-Server 功能。

【讨论】:

我们无法对应用程序进行任何更改,因为我们现在没有源代码。是否可以单独使用 Sql 而不是应用程序来实现任何替代方案? @smilu 在这种情况下,我只能建议:不要使用 SQL Server 2005。鉴于 2005(在软件方面)现在已经很老了,这是一个真正的问题吗?

以上是关于触发器在 SQL Server 的 BulkCopy 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

sql server 触发器一个结果集变化更新到新表

sql server 触发器

sql server触发器 子查询返回值不止一个 如何解决?

sql 检测更新触发器中修改的字段(sql server 2005)?

SQL Server触发器

SQL server 建立的触发器子查询返回值不唯一,需要用多个返回值如何操作