我是SQL Server的新手。我有一个将数据加载到舞台表的批处理过程。我在桌子上有一些外键。我想转储加载到错误表时遇到的所有外键错误。我怎么做?外键约束 - 写入错误表 - SQL Server 2008
感谢 新新手
我是SQL Server的新手。我有一个将数据加载到舞台表的批处理过程。我在桌子上有一些外键。我想转储加载到错误表时遇到的所有外键错误。我怎么做?外键约束 - 写入错误表 - SQL Server 2008
感谢 新新手
一种方法是将数据从临时表加载到其中有没有FK约束的临时表,删除不良记录(即违反FK约束),然后将数据进入舞台表。如果桌面上有很多FK,这可能会有些乏味,所以你可能想要自动化这个过程。
下面是一些伪代码来说明我的意思......
-- First put the raw data into MyTempTable
-- Find the records that are "bad" -- you can SELECT INTO a "bad records" table
-- for later inspection if you want...
SELECT *
INTO #BadRecords
FROM MyTempTable
WHERE ForeignKeyIDColumn NOT IN
(
SELECT ID FROM ForeignKeyTable
)
-- Remove the bad records now
DELETE
FROM MyTempTable
WHERE ForeignKeyIDColumn NOT IN
(
SELECT ID FROM ForeignKeyTable
)
-- Now the data is "clean" (won't violate the FK) so you can insert it
-- from MyTempTable into the stage table
使用SSIS加载数据。验证失败的记录可以发送到异常表。
请发布您的批处理。 – Paparazzi
您正在加载ISAM吗?如果您正在进行批处理,最好禁用约束,然后运行一个进程来查找违规情况,将它们隔离在某种错误表中,然后强制执行约束。约束的全部目的是不让你插入违规行。 – Maess