1. sql Server日誌文件總結及日誌滿的處理
交易日誌(Transaction logs)是資料庫結構中非常重要但又經常被忽略的部分 由於它並不像資料庫中的schema那樣活躍 因此很少有人關注交易日誌 交易日誌是針對資料庫改變所做的記錄 它可以記錄針對資料庫的任何操作 並將記錄結果保存在獨立的文件中 對於任何每一個交易過程 交易日誌都有非常全面的記錄 根據這些記錄可以將數據文件恢復成交易前的狀態 從交易動作開始 交易日誌就處於記錄狀態 交易過程中對資料庫的任何操作都在記錄范圍 直到用戶點擊提交或後退後才結束記錄 每個資料庫都擁有至少一個交易日誌以及一個數據文件 出於性能上的考慮 SQL Server將用戶的改動存入緩存中 這些改變會立即寫入交易日誌 但不會立即寫入數據文件 交易日誌會通過一個標記點來確定某個交易是否已將緩存中的數據寫入數據文件 當SQL Server重啟後 它會查看日誌中最新的標記點 並將這個標記點後面的交易記錄抹去 因為這些交易記錄並沒有真正的將緩存中的數據寫入數據文件 這可以防止那些中斷桐桐畢的交易修改數據文件 維護交易日誌 因為很多人經常遺忘交易日誌 因此它也會給系統帶來一些問題 隨著系統的不斷運行 日誌記錄的內容會越來越多 日誌文件的體積也會越來越大 最終導致可用磁碟空間不足 除非日常工作中經常對日誌進行清理 否則日誌文件最終會侵佔分區內的全部可用空間 日誌的默認配置為不限容量 如果以這種配置工作 它就會不斷膨脹 最終也會占據全部可用空間 這兩種情況都會導致資料庫停止工作 對交易日誌的日常備份工作可以有效的防止日誌文件過分消耗磁碟空間 備份過程會將日誌中不再需要的部分截除 截除的方法是首先把舊記錄標記為非活動狀態 然後將新日誌覆蓋到舊日誌的位置上 這樣就可以防止交易日誌的體積不斷局芹膨脹 如果無法對日誌進行經常性的備份工作 最好將資料庫設置為 簡單恢復模式 在這種模式下 系統會強制交易日誌在每次記錄標記點時 自動進行截除操作 以新日誌覆蓋舊日誌 截除過程發生在備份或將舊標記點標為非活動狀態時 它使得舊的交易記錄可以被覆蓋 但這並不會減少交易日誌實際佔用的磁碟空間 就算不再使用日誌 它依然會占據一定的空間 因此在維護時 還需要對交易日誌進行壓縮 壓縮交易日誌的方法是刪除非活動記錄 從而減少日誌文件所佔用的物理硬碟空間 通過使用DBCC SHRINKDATABASE語句可以壓縮當前資料庫的交易日誌文件 DBCC SHRINKFILE語句用來壓縮指定的交易日誌文件 另外也可以在資料庫中激活自動壓縮操作 當壓縮日誌時 首先會將舊記錄標記為非活動狀態 然後將帶有非活動標記的記錄徹底刪除 根據所使用的壓縮方式的不同 你可能不會立即看到結果 在理想情況下 壓縮工作應該選在系統不是非常繁忙的時段進行 否則有可能影響資料庫性能 恢復資料庫 交易記錄備份可以用來將資料庫恢復到某一指定狀態 但交易記錄備份本身不足以完成恢復資料庫的任務 還需要備份的數據文件參與恢復工作 恢復資料庫時 首先進行的輪斗是數據文件的恢復工作 在整個數據文件恢復完成前 不要將其設為完成狀態 否則交易日誌就不會被恢復 當數據文件恢復完成 系統會通過交易日誌的備份將資料庫恢復成用戶希望的狀態 如果在資料庫最後一次備份後 存在多個日誌文件的備份 備份程序會按照它們建立的時間依次將其恢復 另一種被稱為log shipping的過程可以提供更強的資料庫備份能力 當log shipping配置好後 它可以將資料庫整個復制到另一台伺服器上 在這種情況下 交易日誌也會定期發送到備份伺服器上供恢復數據使用 這使得伺服器一直處於熱備份狀態 當數據發生改變時它也隨之更新 另一個伺服器被稱作監視(monitor)伺服器 可以用來監視按規定時間間隔發送的shipping信號 如果在規定時間內沒有收到信號 監視伺服器會將這一事件記錄到事件日誌 這種機制使得log shipping經常成為災難恢復計劃中使用的方案 性能優化 交易日誌對資料庫有重要作用 同時它對系統的整體性能也有一定影響 通過幾個選項 我們可以對交易日誌的性能進行優化 由於交易日誌是一個連續的磁碟寫入過程 在這當中不會發生讀取動作 因此將日誌文件放在一個獨立的磁碟 對優化性能有一定作用 另一項優化措施與日誌文件的體積有關 我們可以設置日誌文件的體積不超過硬碟空間的百分之幾 或者確定它的大小 如果將其設置的過大會浪費磁碟空間 而如果設置的過小則會強制記錄文件不斷嘗試擴展 導致資料庫性能下降 事務日誌文件Transaction Log File是用來記錄資料庫更新情況的文件 擴展名為ldf 在 SQL Server 和 SQL Server 中 如果設置了自動增長功能 事務日誌文件將會自動擴展 一般情況下 在能夠容納兩次事務日誌截斷之間發生的最大數量的事務時 事務日誌的大小是穩定的 事務日誌截斷由檢查點或者事務日誌備份觸發 然而 在某些情況下 事務日誌可能會變得非常大 以致用盡空間或變滿 通常 在事務日誌文件占盡可用磁碟空間且不能再擴展時 您將收到如下錯誤消息 Error: Severity: State: The log file for database % *ls is full 除了出現此錯誤消息之外 SQL Server 還可能因為缺少事務日誌擴展空間而將資料庫標記為 SUSPECT 有關如何從此情形中恢復的其他信息 請參見 SQL Server 聯機幫助中的 磁碟空間不足 主題 另外 事務日誌擴展可能導致下列情形 · 非常大的事務日誌文件 · 事務可能會失敗並可能開始回滾 · 事務可能會用很長時間才能完成 · 可能發生性能問題 · 可能發生阻塞現象 原因 事務日誌擴展可能由於以下原因或情形而發生 · 未提交的事務· 非常大的事務· 操作 DBCC DBREINDEX 和 CREATE INDEX· 在從事務日誌備份還原時· 客戶端應用程序不處理所有結果· 查詢在事務日誌完成擴展之前超時 您收到假的 Log Full 錯誤消息· 未復制的事務 解決方法 日誌文件滿而造成SQL資料庫無法寫入文件時 可用兩種方法 一種方法 清空日誌 .打開查詢分析器 輸入命令DUMP TRANSACTION 資料庫名 WITH NO_LOG 再打開企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮資料庫 收縮文件 選擇日誌文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了 另一種方法有一定的風險性 因為SQL SERVER的日誌文件不是即時寫入資料庫主文件的 如處理不當 會造成數據的損失 : 刪除LOG分離資料庫 企業管理器->伺服器->資料庫->右鍵->分離資料庫 刪除LOG文件附加資料庫 企業管理器->伺服器->資料庫->右鍵->附加資料庫此法生成新的LOG 大小隻有 多K 注意 建議使用第一種方法 如果以後 不想要它變大 SQL 下使用 在資料庫上點右鍵 >屬性 >選項 >故障恢復 模型 選擇 簡單模型 或用SQL語句 alter database 資料庫名 set recovery simple另外 如上圖中資料庫屬性有兩個選項 與事務日誌的增長有關 Truncate log on checkpoint(此選項用於SQL SQL 中即故障恢復模型選擇為簡單模型)當執行CHECKPOINT 命令時如果事務日誌文件超過其大小的 % 則將其內容清除在開發資料庫時時常將此選項設置為True Auto shrink定期對資料庫進行檢查當資料庫文件或日誌文件的未用空間超過其大小的 %時 系統將會自動縮減文件使其未用空間等於 % 當文件大小沒有超過其建立時的初始大小時不會縮減文件縮減後的文件也必須大於或等於其初始大小對事務日誌文件的縮減只有在對其作備份時或將Truncate log on checkpoint 選項設為True 時才能進行 注意 一般立成建立的資料庫默認屬性已設好 但碰到意外情況使資料庫屬性被更改 請用戶清空日誌後 檢查資料庫的以上屬性 以防事務日誌再次充滿 lishixin/Article/program/SQLServer/201311/22123
2. 日誌文件丟失或出錯的情況下如何恢復SQL資料庫
1. 新建資料庫(同名)
2. 停掉資料庫
3. 刪除新建資料庫的日誌文件,用要恢復的覆蓋mdf文件
4. 啟動資料庫伺服器
5. 設置資料庫允許直接操作系統表
6. 設置資料庫為緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID('dbDataHome')
7. 重建資料庫日誌文件
dbcc rebuild_log('dbDataHome','D:\Data\dbData_Data.LDF')
8. 驗證資料庫一致性(可省略)
dbcc checkdb('dbDataHome')
9.設置資料庫為正常狀態
exec sp_dboption 'dbDataHome','dbo use only','false'
10. 最後一步,我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復。
3. 如何查看sql資料庫操作日誌
請參照以下步驟查看sql資料庫操作日誌。
1、首先在電腦上打開sql server軟體,進入軟體載入界面。
4. 怎麼查看sql連接失敗的日誌
可以使用
SQL
Server
Management
Studio
中的日誌文件查看器來訪問有關在以下日誌中捕獲的錯誤和事件的信息:
審核集合
數據收集
資料庫郵件
作業歷史記錄
SQL
Server
SQL
Server
代理
Windows
事件(這些
Windows
事件還可以從事件查看此旁襪器進行訪問。)
從
SQL
Server
2012
開始,您可以使用已注冊的伺服器從
SQL
Server
的本地或遠程實例查看
SQL
Server
日誌文件。
通過使用已注冊的伺服器,無論實例處於聯機還是離線狀態,您都可以查看日誌文件。
有關聯機訪問的詳細信息,請參閱本主題後面的「從已注冊的伺服器查看聯機日誌文件」過程。
-------------------------------------------------------------------------------------------------------------------
SQL
Server
錯誤日誌包含用戶定義的事件和某些系統事件。
您可以使用該錯誤日誌來排除與
SQL
Server
相關的故森激障。按如下方法即可查看日誌:
1、在對象資源管理器中,展開某個伺服器,展開「管理」,再展開「SQL
Server
日誌」。
2、右鍵單擊某個日誌並單擊啟轎「查看
SQL
Server
日誌」。
5. 如何查看sql server 2008的SQL語句執行錯誤日誌
1、使早模用了SQL Server 2008 Management Studio進行載入資料庫,進行點擊列表中的管理的選項。
6. SQL錯誤日誌在哪裡看
SQL Server 錯誤日誌可用 SQL Server 企業管理器或任何文本編輯器查看。默認情況下,錯誤日誌位於 Program Files\Microsoft SQL Server\Mssql\Log\Errorlog。
置疑可能是lDF文件丟失,如沒有備份,可參照只有Mdf文件恢復資料庫