При выполнении следующих трех команд освобождается память для SQL Server путем очистки его кеша.
DBCC FREESYSTEMCACHE
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
Однако, он может быть использован в текущей операции, поэтому, пожалуйста, смотрите ударный запрос после вставкикаждые 10000 память очищается выполнением вышеуказанной команды DBCC.
DECLARE @counter INT = 1
DECLARE cur_Data_Transfer CURSOR FOR -- Cursor declared
SELECT column1, column2 -- select desired columns
FROM Book
OPEN cur_Data_Transfer --Opening Cursor
FETCH NEXT FROM cur_Data_Transfer INTO @column1, @column2 --Put values to variable
WHILE @@FETCH_STATUS = 0 -- Faching is success
BEGIN
INSERT INTO BookTemp (column1, column2) -- Inserting to temptable
VALUES(@column1, @column2)
IF @counter = 10000
BEGIN
DBCC FREESYSTEMCACHE -- Clear System Cache
DBCC FREEPROCCACHE -- Clear Proc Cache
SET @counter = 0 -- Restarting counter
END
FETCH NEXT FROM cur_Data_Transfer INTO @column1, @column2
SET @counter = @counter + 1
END
CLOSE cur_Data_Transfer -- Closing cursor
DEALLOCATE cur_Data_Transfer -- De-allocating