Ian*_*ton 23 sql-server foreign-keys sqlbulkcopy
我使用SqlBulkCopy将一组行插入到表中.我忘了在行上设置一个整数值.缺少的列用于引用另一个表,并使用外键约束强制执行此操作.
对于插入的每一行,最终整数值为零,零不识别相关表中的行.当我将值修改为有效值然后尝试将其切换回零时,它将不接受它.
所以我的问题是SqlBulkCopy如何设法让数据库处于无效状态?
usr*_*usr 26
SqlBulkCopy如何设置让数据库处于无效状态?
它会禁用您要插入的表上的外键.
是的,这是一个可怕的默认值.如果您能负担得起,请务必设置选项CHECK_CONSTRAINTS(或CheckConstraints用于SqlBulkCopy).
它默认情况下也不触发同样可怕的数据一致性触发器.触发器是有原因的.
小智 6
默认情况下,批量复制操作期间将忽略CHECK和FOREIGN KEY约束.SqlBulkCopy是一个托管类,提供类似于SQL Server bcp命令提供的功能.bcp命令具有-h提示,除非您提供CHECK_CONSTRAINTS提示,否则在批量加载期间将忽略CHECK和FOREIGN KEY约束.technet文章指出 - http://technet.microsoft.com/en-us/library/ms162802.aspx
类似地,SqlBulkCopy类有一个接受SqlBulkCopyOptions枚举的构造函数.您必须设置CheckConstraints枚举选项以确保检查约束 - http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions(v=vs.110).aspx
这篇文章讨论了约束检查控制 - http://technet.microsoft.com/en-us/library/ms186247(v=sql.105).aspx
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
5984 次 |
| 最近记录: |