Sybase資料庫超大表資料矯正更新

2022-03-18 08:36:47 字數 911 閱讀 6440

隨著資料的增長,系統中過千萬的業務表在已經不少見。對這些超大表進行矯正更新時,直接update會產生大量的事務日誌,撐爆日誌空間,導致事務回滾矯正失敗。

解決問題的思路就是分批提交減少事務日誌的大小,其中一種方法是在儲存過程中使用游標更新並批量提交。

**如下:

use ywst

go--建立更新儲存過程,更新10000行提交一次

create procedure update_sfgd

as declare update_cur cursor for select n_sfgd from ywst..t_ywgy_dzjz_jzml for update of n_sfgd

declare @update_count int,@sfgd int

begin

set @update_count = 0

open update_cur

fetch update_cur into @sfgd

while (@@sqlstatus != 2)

begin

update ywst..t_ywgy_dzjz_jzml set n_sfgd = 1 where current of update_cur

set @update_count = @update_count +1

if @update_count = 10000

begin

commit

set @update_count = 0

endfetch update_cur into @sfgd

end

close update_cur

endgo

-- 執行更新儲存過程

exec update_sfgd

go

Sybase資料庫表備份

1.insert into select語句 語句形式為 insert into table2 field1,field2,select value1,value2,from table1 要求目標表table2必須存在,由於目標表 table2 已經存在,所以我們除了插入源表 table1 的字段...

SYBASE資料庫總結

sybase中插入資料的方式有 1.insert into b header temp cust record id select min id from c record temp group by out order no 2.select rowid identity 18 t.into b ...

sybase資料庫恢復

一 對tempdb的恢復 測試 在資料庫執行狀態下,在系統中rm刪除了擴充套件的tempdb裝置tempdbdev.dat,initializing virtual device 6,syb data tempdbdev.dat error 822,severity 20,state 2 恢復 停止...