錯誤:「由於文件組 ‘DEFAULT’ 中的磁盤空間不足,無法為數據庫 ‘TEMPDB’ 分配新頁」。表面是 tempdb 滿了,實際是資料檔案所在分區為 FAT32,單檔案上限 4GB,導致自動增長失敗。
DBCC SHRINKFILE (tempdev, 10);
DBCC SHRINKFILE (templog, 10);
-- 然後在屬性中將「最大大小」設為 4000 MB
CREATE PROCEDURE INSERT_d_1 AS
DECLARE @name1 VARCHAR(4000), @name2 VARCHAR(4000), @id INT;
DECLARE c1 CURSOR FOR
SELECT t1.name, t2.name, t1.id FROM t_1 t1 JOIN t_2 t2 ON t1.id=t2.id ORDER BY t1.id;
OPEN c1;
FETCH NEXT FROM c1 INTO @name1,@name2,@id;
WHILE @@FETCH_STATUS=0 BEGIN
INSERT INTO test_1 VALUES(@name1,@name2,@id);
FETCH NEXT FROM c1 INTO @name1,@name2,@id;
END
CLOSE c1; DEALLOCATE c1;
CREATE PROCEDURE INSERT_d_2 AS
DECLARE c1 CURSOR FOR SELECT name, id FROM t_1 ORDER BY id;
OPEN c1;
FETCH NEXT FROM c1 INTO @name1,@id;
WHILE @@FETCH_STATUS=0 BEGIN
DECLARE c2 CURSOR FOR SELECT name FROM t_2 WHERE id=@id;
OPEN c2;
FETCH NEXT FROM c2 INTO @name2;
WHILE @@FETCH_STATUS=0 BEGIN
INSERT INTO test_1 VALUES(@name1,@name2,@id);
UPDATE t_s SET id=@id, date=GETDATE(); -- 記錄進度
FETCH NEXT FROM c2 INTO @name2;
END
CLOSE c2; DEALLOCATE c2;
FETCH NEXT FROM c1 INTO @name1,@id;
END
CLOSE c1; DEALLOCATE c1;