討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 政府補助!學嵌入式+物聯網 傑米的攝影旅遊筆記
[ 回上頁 ] [ 討論區發言規則 ]
LOG的檔案太大了...怎麼辦?!
更改我的閱讀文章字型大小
作者 : kirpheaice(吉爾菲艾斯)討論區板主 人氣指數超過10000點
[ 貼文 149 | 人氣 12109 | 評價 690 | 評價/貼文 4.63 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/4/23 下午 06:15:42
請教各位一下.

SQL Server的LDF檔案.日漸成長.越來越大.己經2GB了.
怎麼辦?!

我先用備份.把記錄檔備份起來.
然後.壓縮資料庫.
可是只能壓一點點.有沒有什麼辦法可以解決這個問題呢?!
我試過:
1.我把LDF直接Delete,它不會自動產生一個新的.就給我整個掛掉了
2.我把MDF跟LDF Copy一份到E槽.然後.在SQL Server刪除那個資料庫.然後再把
E槽的MDF Copy回來.然後用SQL Server去附加回來.SQL 就跟我說沒有LDF.不行.

怎麼辦?!?!

救狼喔~~~~~~~~~~~~~~~~~
作者 : aqr199pro(水瓶狂龍) 人氣指數超過10000點
[ 貼文 107 | 人氣 14016 | 評價 210 | 評價/貼文 1.96 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/4/24 下午 08:01:52
這是我資料庫備份的存程序,參考看看
CREATE PROCEDURE FlowerdjBackupJob
AS
DECLARE @FlowerDJPATH nvarchar(400)
--儲存位置及名稱
Select @FlowerDJPATH='C:\MSSQL7\BACKUP\dbname'+Right(DATEPART(year,getdate()),4)+
right(100+DATEPART(month,getdate()),2)+
right(100+DATEPART(day,getdate()),2)+
right(100+DATEPART(hour,getdate()),2)+
right(100+DATEPART(minute,getdate()),2)
--截斷log且清除己經完成交易的紀錄
BACKUP LOG [flowerdj] WITH TRUNCATE_ONLY
--備份資料庫
BACKUP DATABASE [flowerdj]
TO DISK = @FlowerDJPATH
WITH NOINIT ,
NOUNLOAD ,
NAME = 'FlowerDJ backup',
SKIP ,
STATS = 10,
NOFORMAT

----------------------------------------------------------------
以上,希望對你有幫助
作者 : djwang(David Jackson)
[ 貼文 28 | 人氣 764 | 評價 150 | 評價/貼文 5.36 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/4/25 上午 10:42:04
>2.我把MDF跟LDF Copy一份到E槽.然後.在SQL Server刪除那個資料庫.然後再把
>E槽的MDF Copy回來.然後用SQL Server去附加回來.SQL 就跟我說沒有LDF.不行.

如果只有MDF檔案的話,就用下列的SP:
exec sp_attach_single_file_db @dbname=Northwind,
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Northwind.mdf'

就看你的DB Name與MDF名稱與路徑為何,就改一下就好了~
另在執行此SP時,記得先把MDF Copy到SQL Server的Data路徑下~^^

作者 : kirpheaice(吉爾菲艾斯)討論區板主 人氣指數超過10000點
[ 貼文 149 | 人氣 12109 | 評價 690 | 評價/貼文 4.63 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/4/25 下午 07:48:01
感謝兩位.這個世界上是有愛心的啦~~~~^^~~~~~
我也找到一招了.也公佈一下.

語法
DBCC SHRINKFILE
    ( { file_name | file_id }
     { [ , target_size ]
     | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
     }
    )
範例
本範例將縮減 MyDatabaseName 使用者資料庫的交易紀錄檔到2MB。

 
1.DBCC SHRINKFILE(MyDatabaseName_log, 2)
 
注意:如果交易紀錄檔沒有縮小至期望值,請執行以下步驟
 
1.BACKUP LOG MyDatabaseName WITH TRUNCATE_ONLY
2.DBCC SHRINKFILE(MyDatabaseName_log,2)


這個也有用.可以壓到小小的.所以.在做完很大的動作之後(像我醬動個幾十萬筆資料後)就順便來這二行.

醬子就ok啦~~
作者 : monkey66(monkey)
[ 貼文 2 | 人氣 9 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/24 下午 05:57:25
謝謝 真的很好用喔
作者 : crystalchen(果子)
[ 貼文 60 | 人氣 632 | 評價 280 | 評價/貼文 4.67 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/6 下午 05:41:27
1.BACKUP LOG MyDatabaseName WITH TRUNCATE_ONLY
2.DBCC SHRINKFILE(MyDatabaseName_log,2)

真是受益匪淺
太感謝了 ^_____^
作者 : bendy089(bendy)
[ 貼文 1 | 人氣 3 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/18 下午 02:56:38
真的是太好用阿 感謝大大
作者 : lone(小蓉)
[ 貼文 12 | 人氣 1142 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/16 下午 12:17:37
執行上述後,卻出現:
DBCC的執行已經完成。如果DBCC印出錯誤訊息,請聯絡您的系統管理員。
無法將檔案'XX_LOG'放到sysfiles。
變更資料庫內容為'xx'。

請問該如保解決??謝謝~~
作者 : chiahsienwei(chiahsienwei)
[ 貼文 9 | 人氣 411 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/24 上午 08:44:47
嗚~~我也刪了
我也做了
exec sp_attach_single_file_db @dbname=Northwind,
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Northwind.mdf'
但系統會出現
裝置啟動錯誤。實體檔案名稱 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Northwind.mdf' 可能不正確。

怎麼了~我完了,我把人事的東西刪了~~
作者 : kenchang32(豆子)
[ 貼文 17 | 人氣 9 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/2/3 上午 08:53:41
以下是我試過 確定無誤的方式,希望對各位有幫助 特別是不慎砍掉交易紀錄檔的朋友們

1.建立一個供恢復使用的資料庫(如test)
2.停掉SQL Server 的服務
3.將剛才建立資料庫的日誌文件test_log.ldf刪除,用要恢復的資料庫mdf文件覆蓋剛才生成的資料庫檔案test_data.mdf
4.啟動SQL Server 的服務。此時會看到資料庫test的狀態為「置疑」。這時候不能對此資料庫進行任何操作。
設置資料庫允許直接操作系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇「屬性」,在「服務器設定值」頁面中將「允許直接修資料庫系統類別目錄」一項選中。也可以使用如下語句來實現。
5.
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go

6.update sysdatabases set status=-32768 where dbid=DB_ID('test')
7.dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
8.dbcc checkdb('test')
9.sp_dboption 'test','dbo use only','false'

順便提醒一下
要砍DB log file 請記得
1.卸離欲砍交易紀錄檔之資料庫
2.停止SQL的服務
3.進入log file 實體路徑進行砍log的動作
4.啟動SQL的服務
5.執行sp_attach_single_file_db

作者 : james1015(James)
[ 貼文 1 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/4/19 下午 11:29:08
請問一下,這些指令要在哪裡下呀
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/4/20 上午 08:03:26
@@|||
這是什麼問題呀!!
在SQL Query Analyzer呀!!
作者 : nickman(nicky) 人氣指數超過10000點
[ 貼文 52 | 人氣 13420 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/13 下午 05:07:41
執行DBCC之後
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ------ ----------- ----------- ----------- --------------
17 2 133840 63 133840 56

(1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
log還是沒變再執行
BACKUP LOG PUBLIC WITH TRUNCATE_ONLY
The command(s) completed successfully.
再執行執行DBCC
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ------ ----------- ----------- ----------- --------------
17 2 133840 63 133840 56

(1 row(s) affected)


log還是沒變要怎麼辦,我的是mssql7.0
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/13 下午 05:20:45
你這樣當然不會縮呀
你BACKUP 完要執行DBCC SHRINKFILE(........)呀

>執行DBCC之後
>DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
>------ ------ ----------- ----------- ----------- --------------
>17 2 133840 63 133840 56
>
>(1 row(s) affected)
>
>DBCC execution completed. If DBCC printed error messages, contact your system administrator.
>log還是沒變再執行
>BACKUP LOG PUBLIC WITH TRUNCATE_ONLY
>The command(s) completed successfully.
>再執行執行DBCC
>DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
>------ ------ ----------- ----------- ----------- --------------
>17 2 133840 63 133840 56
>
>(1 row(s) affected)
>
>
>log還是沒變要怎麼辦,我的是mssql7.0
作者 : nickman(nicky) 人氣指數超過10000點
[ 貼文 52 | 人氣 13420 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/14 下午 02:53:05
有啊

BACKUP LOG PUBLIC WITH TRUNCATE_ONLY
DBCC SHRINKFILE(PUBLIC_Log,2)
這樣對嗎
作者 : eliot(小台) VB.Net卓越專家SQL Server 7/2K卓越專家ASP.Net頂尖高手貼文超過2000則人氣指數超過10000點
[ 貼文 2213 | 人氣 28768 | 評價 9240 | 評價/貼文 4.18 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/14 下午 08:30:06
哈~~~不對
BACKUP LOG PUBLIC WITH TRUNCATE_ONLY
use PUBLIC--少了這個
DBCC SHRINKFILE(PUBLIC_Log,2)
作者 : millin(小囉囉)
[ 貼文 16 | 人氣 2783 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/7/6 上午 08:26:08
1.先卸離資料庫
2.將 *.ldf 改名
3.附加資料庫,然後因為找不到原來紀錄檔,系統會問你是否建立一份新紀錄檔,
  回答YES就會重新產生一份,確定資料無誤後,原紀錄檔就可以殺了

以上是我的經驗,也是MSSQL的特性!
作者 : millin(小囉囉)
[ 貼文 16 | 人氣 2783 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/7/6 上午 08:26:26
1.先卸離資料庫
2.將 *.ldf 改名
3.附加資料庫,然後因為找不到原來紀錄檔,系統會問你是否建立一份新紀錄檔,
  回答YES就會重新產生一份,確定資料無誤後,原紀錄檔就可以殺了

以上是我的經驗,也是MSSQL的特性!
作者 : zzz249(zzz249)
[ 貼文 46 | 人氣 5033 | 評價 150 | 評價/貼文 3.26 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/7/7 上午 09:56:40
我提供我的經驗....因為我不會用vb 去寫程式...
我用最笨的方法
[例] ms sql server名稱 mysrv
資料庫名稱為 AA
1.我會先建一個新的資料庫 950707AA [習慣用日期來看]
也是建在mysrv中喔,

2.先將AA中的所有檢視表...全部都選取...按右鍵..選所有工作...產生sql原始碼...習慣桌面

3.在用匯出資料的方法....把所有 AA 的東西匯出到 950707AA中
但不包含所有的檢視表.....[本人資料庫約2g...piii-800 ...要40分鐘左右]

4.匯出成功後再將 AA 卸離... ....再到檔案總管中....將AA 及AA.log 搬到其他地方

5.再建一個名字叫 AA 的資料庫
在用匯入資料的方法....把所有 950707AA 的東西匯出到 AA中
但不包含所有的檢視表.....完成之後再開啟 Query Analyzer
將剛剛的那個 檢視表sql原始碼 貼上再執行一次
這樣資料庫log就會自動回復到最小的狀態

6.如果資料庫有錯....至少有一份備份檔950707aa.... 不然只要再把那個卸離的aa
叫回來就可以了....多一層保障也粉好

[註] 做這個動作時..最好都沒人連線到ms sql....下班後再做吧....>.<
另外如果你的log長的太快了...不用1~2個月就長到2g了.....那可能是你這段時間做了太多的查詢動作...(可能都是每天的全資料庫的大查詢...不是一筆一筆的查那種喔....)....如果是這樣...建議你要用其他方式更改你的查詢方式...不然以後還會長的那麼快..那麼胖....(ms sql內分泌失調!!! >.< )

 板主 : 徵求中
 > SQL Server 7/2000 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - SQL Server 7/2000 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
SQL Server 7/2000
1 小朱 1540 
2 小台 1520 
3 Gordon 600 
4 ㄉ一ˊㄎㄜˋ 580 
5 路人 490 
6 max 470 
7 william 410 
8 Aries 250 
9 阿利 180 
10 羅啟章 160 
SQL Server 7/2000
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.2041016