我們將數百萬條記錄插入到詳細信息表中,其數據以CSV格式存儲在主表中。爲了完成插入操作,我們使用了一個交叉應用函數,如果我一個接一個地插入,似乎可以工作,但是如果我執行整個插入操作,只有大約2/3的記錄進入,並且查詢剛剛停止,大約3個半小時後成功。會交叉申請保釋,但在SQL Server中沒有錯誤?
這裏的插入查詢
INSERT INTO DetailsTable(MasterTableID, DetailColumn1, DetailColumn2)
SELECT MasterTableID, DetailColumn1, DetailColumn2 FROM MasterTable
CROSS APPLY [fn_CreateDetailData](MasterTableID, '§')
如果我做了以下爲沒有得到插入的記錄之一,寄託都將正常工作和有記錄插入就好
INSERT INTO DetailsTable(MasterTableID, DetailColumn1, DetailColumn2)
SELECT MasterTableID, DetailColumn1, DetailColumn2 FROM MasterTable
CROSS APPLY [fn_CreateDetailData](MasterTableID, '§')
WHERE MasterTableID = 12345
從我所知道的關於SQL Server的所有事情來看,一個事務中存在單個插入語句,因此它的全部或全部都不存在,但這似乎並不是這種情況。
發生這種情況的唯一原因是您的函數將其他行過濾掉。 向我們展示您的功能。 – 2010-06-19 03:16:24
當我沒有指定主鍵ID時,我的函數如何過濾掉這些行,但是當我這樣做時不會將其過濾掉? 不幸的是,這看起來像是一個StackOverflow能夠處理的特定問題。 – 2010-06-19 22:01:47
這是事情,如果我只是多次運行該函數,我會插入越來越多的新的獨特行,這似乎很奇怪。 – 2010-06-19 22:10:07