午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    由于文件組 ‘DEFAULT’ 中的磁盤空間不足,無法為數(shù)據(jù)庫 ‘TEMPDB’ 分配新頁
    來源:易賢網(wǎng) 閱讀:5024 次 日期:2014-11-03 15:41:25
    溫馨提示:易賢網(wǎng)小編為您整理了“由于文件組 ‘DEFAULT’ 中的磁盤空間不足,無法為數(shù)據(jù)庫 ‘TEMPDB’ 分配新頁”,方便廣大網(wǎng)友查閱!

    今天接到一個朋友的問題,sql server報“由于文件組 ‘DEFAULT’ 中的磁盤空間不足,無法為數(shù)據(jù)庫 ‘TEMPDB’ 分配新頁”,按照錯誤提示應(yīng)該是tempdb空間不足,讓其查看tempdb對應(yīng)數(shù)據(jù)庫文件大小為不到4g,查看其對應(yīng)文件為自增長,硬盤空間還有40g多點,那應(yīng)該沒有問題。后來她說該文件所處位置的盤是fat32的,那問題確定是fat32最大支持文件大小是4g。解決辦法:

    1、讓tempdb中的文件恢復(fù)默認值,設(shè)置其最大值

    1)重啟sql server服務(wù),tempdb一般會自動變?yōu)槌跏蓟笮?/P>

    2)如果1)失敗,使用下面語句

    dbcc shrinkfile (tempdev, 10)

    dbcc shrinkfile (templog, 10)

    2)然后設(shè)置tempdev和templog的最大大小為4000m

    2、添加數(shù)據(jù)文件和日志文件,并設(shè)置其最大值為4000m

    3、修改程序,從根源上解決問題

    分析產(chǎn)生該問題原因

    詢問朋友后,原來是她對一個6kw的表和1kw的表進行關(guān)聯(lián),然后取得需要的數(shù)據(jù)插入到另一張表中,因為涉及的數(shù)據(jù)量非常大,所有導(dǎo)致tempdb數(shù)據(jù)庫飛速增大,超過系統(tǒng)文件大小限制。導(dǎo)致文章開始的錯誤,光添加文件,對于這么大數(shù)據(jù)量的程序來說還是不能解決問題。應(yīng)該在程序上去優(yōu)化,而不是靠添加tempdb中文件的大小和數(shù)量來解決問題。

    添加程序的提交次數(shù),而不是所有數(shù)據(jù)一次提交,放在一個事物中。

    我根據(jù)程序需求模擬的寫了兩種處理過程的方法

    模擬環(huán)境:

    --創(chuàng)建模擬表

    SELECT id,name INTO t_1 FROM sys.sysobjects;

    SELECT object_id id,name INTO t_2 FROM sys.columns;

    --創(chuàng)建跟蹤表

    CREATE TABLE t_s (id int DEFAULT 0,date datetime DEFAULT getdate());

    INSERT INTO t_s VALUES(0,getdate());

    --創(chuàng)建需要插入數(shù)據(jù)表

    SELECT t1.name n1,

    t2.name n2,

    t1.id

    INTO test_1

    FROM t_1 t1,

    t_2 t2

    WHERE t1.id = t2.id

    AND 1=2;

    方法一:

    特點:1、優(yōu)點執(zhí)行效率比較高,無需排序和插入跟蹤表

    2、缺點:不能查看程序執(zhí)行進度,如果異常終止,必須重新執(zhí)行

    create PROCEDURE [dbo].[INSERT_d_1]

    AS

    DECLARE @name1 varchar(4000)

    DECLARE @name2 varchar(4000)

    DECLARE @id int

    DECLARE c1 CURSOR

    FOR

    SELECT t1.name,

    t2.name,

    t1.id

    FROM t_1 t1,

    t_2 t2

    WHERE 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

    方法二:

    特點:1、可以跟蹤程序的執(zhí)行進度查詢t_s表,如果異常終止可以寫其他程序繼續(xù)

    2、程序使用二重游標,執(zhí)行效率比較低

    create PROCEDURE [dbo].[INSERT_d_2]

    AS

    DECLARE @name1 varchar(4000)

    DECLARE @name2 varchar(4000)

    DECLARE @id int

    DECLARE c1 CURSOR

    FOR

    SELECT t1.name,

    t1.id

    FROM t_1 t1

    ORDER BY t1.id

    open c1

    fetch next from c1 into @name1,@id

    WHILE @@fetch_status=0

    BEGIN

    --二重循環(huán)

    DECLARE c2 CURSOR FOR

    SELECT t2.name FROM t_2 t2 WHERE t2.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

    更多信息請查看IT技術(shù)專欄

    更多信息請查看數(shù)據(jù)庫
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)