隨著資料的增長,系統中過千萬的業務表在已經不少見。對這些超大表進行矯正更新時,直接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 恢復 停止...