Мы вставляем пару миллионов записей в таблицу сведений, данные для которой хранятся в основной таблице в формате CSV. Чтобы выполнить вставку, мы используем функцию перекрестного применения, которая, кажется, работает, если я делаю вставки одну за другой, но если я делаю вставку целиком, поступает только около 2/3 записей, и запрос просто останавливается. с успехом примерно через 3 с половиной часа.
Вот запрос вставки
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, в одной транзакции существует один оператор вставки, так что это либо все, либо ничего, но здесь это не так.