Я пытаюсь вставить почти 1,75,00,000 в 8 таблиц. Я сохранил процедуру для этого. В начале и конце этой процедуры я написал Transaction.
Ошибка: журнал транзакций для базы данных 'Database' переполнен из-за 'ACTIVE_TRANSACTION'.
Примечание: я хочу сохранить все в транзакции, в ее автоматизированном процессе. Этот процесс будет выполняться в базе данных каждый месяц
CREATE OR ALTER PROCEDURE [dbo].[InsertInMainTbls]
AS
BEGIN
PRINT('STARTED [InsertInMainTbls]')
DECLARE @NoRows INT
DECLARE @maxLoop INT
DECLARE @isSuccess BIT=1
BEGIN TRY
BEGIN TRAN
--1st table
SET @NoRows = 1
SELECT @maxLoop=(MAX([col1])/1000)+1 FROM ProcessTbl
SELECT 'loop=='+ CAST(@maxLoop as Varchar)
WHILE (@NoRows <= @maxLoop)
BEGIN
INSERT INTO MainTbl WITH(TABLOCK)
( col1,col2,col3....col40)
SELECT
( val1,val2,val3....val40)FROM
ProcessTbl
WHERE [col1] BETWEEN (@NoRows*1000)-1000
AND (@NoRows*1000)-1
SET @NoRows = @NoRows+1;
END
--2nd table
.
.
.
--8th table
SET @isSuccess=1;
COMMIT TRAN
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE();
SELECT ERROR_MESSAGE() 'ErrorMsg' ;
SET @isSuccess=0;
ROLLBACK TRAN
END CATCH