0
我管理一个数据库,它是来自40个具有相同结构但具有唯一数据的不同服务器的集合。我在中央系统上有多个存储过程,它们从这些服务器编译的.txt
文件中为它们的表执行BULK INSERT
。忽略存储过程中的警告/阻止过程停止
由于40个不同的场外服务器,有时会因包丢失而丢失一些数据。我的问题是,是否有我的程序忽略警告并继续处理?在这种特殊情况下,我想跳过错误,如:
消息547,级别16,状态0,36号线 INSERT语句冲突与外键约束“FK_AppointmentPatient”。数据库“Eaglesoft”中发生冲突,表“Patient.Patient”。
我意识到它抛出这个错误,因为它正在寻找的主键不在外键关系的相应表中。但是,我想在自动化过程中更新尽可能多的数据,然后检查日志,然后修复这些问题。除了我所有的工作。这里正在使用的存储过程:
CREATE TABLE Patient.TempAppointment --Create Temporary table for data
(
ClinicID INT NULL,
AppointmentID INT NULL,
StartTime DATETIME NULL,
EndTime DATETIME NULL,
PatientID INT NULL,
LocationID TINYINT NULL,
TypeID INT
)
BULK INSERT Patient.TempAppointment --Insert data into temporary table
FROM 'E:\Data\PatientAppointment.txt'
WITH (
FIELDTERMINATOR='|',
ROWTERMINATOR='\n',
MAXERRORS = 99
)
INSERT INTO Patient.Appointment --Insert data into main table from temporary table where the data doesn't already exist
SELECT *
FROM Patient.TempAppointment
WHERE NOT EXISTS
(SELECT *
FROM Patient.Appointment
WHERE (Patient.TempAppointment.AppointmentID=Patient.Appointment.AppointmentID AND Patient.TempAppointment.ClinicID=Patient.Appointment.ClinicID))
AND Patient.TempAppointment.AppointmentID IS NOT NULL
AND Patient.TempAppointment.PatientID IS NOT NULL
DROP TABLE Patient.TempAppointment --Drop Temporary Table
这不是一个警告。执行参照完整性是一个严重错误。我建议,当像这样进行导入时,首先将数据导入登台表。这样你就可以操纵和按摩你所需要的数据。 –
你想避免这个错误,或者它对参照完整性没有影响吗? – McNets
你可以临时禁用foreigen键constaints,http://stackoverflow.com/questions/159038/how-can-foreign-key-constraints-be-temporarily-disabled-using-t-sql – McNets