① 資料庫日誌中可以查看插入刪除更新等操作的記錄嗎
使用Log Explorer查看和恢復數據
Log Explorer 4.1.可用於sql Server2005的日誌查看工具
下載地址:
http://download.csdn.net/source/620271
使用方法:
打開Log Explorer -> Attach Log File -> 選擇SQL Server伺服器和登陸方式 -> Connect ->
在Database Name中選擇資料庫 -> Attach-> 左面對話框中Browse-> View Log-> 就可以看到log記錄了
想恢復的話: 右鍵Log記錄 Undo Transation-> 選擇保存文件名和路徑-> 然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如 如果Log是delete table where ...的話,生成的文件代碼就是insert table ....
然後將此insert table的代碼放到查詢分析器里執行.就可以恢復數據.
----------------------------------------------------------------------
--如何恢復被delete/update的數據
----------------------------------------------------------------------
1連接到被刪除資料庫的Db
打開log explorer 選擇 "file"->"attach log file"->選擇伺服器和登陸方式->"connect"->選擇"資料庫"->"attach"
2 查看日誌
在左面操作項目的對話框中選擇"browse"項目->"view log"->就可以看到當前的Log記錄了
3 恢復數據
右鍵某一條log記錄,選擇"undo transation"->"選擇保存文件名和路徑"->然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如: 如果log是delete table where ...的話,生成的文件代碼就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢復被drop table和truncate table後的數據
----------------------------------------------------------------------
1 連接到被刪除資料庫的Db
操作同上
2 恢復方法
1) 選擇"salvaage dropped/truncate"菜單,在右邊的對話框中選擇表名,和droped/trucated的日期,
File Name中選擇生成insert語句腳步的存放位置,condition選擇是droped還是truncated,
最後點擊"create" 就會生成insert語句,把生成的語句到查詢分析器裡面執行一下就可以了
2) 選擇"ViewDDL Commands"菜單->選"truncate table" 操作項->點擊"Salvage"->生成語句->查詢分析器里執行
----------------------------------------------------------------------
--log explorer使用的幾個問題
----------------------------------------------------------------------
1) 對資料庫做完全/差異/日誌備份
備份時如果選用了刪除事務日誌中不活動的條目
再用Log explorer打試圖看日誌時,提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才的記錄了
如果不選用了刪除事務日誌中不活動的條目
再用Log explorer打試圖看日誌時,就能看到原來的日誌並做恢復
2) 修改了其中一個表中的部分數據,此時用Log explorer看日誌,可以作日誌恢復
3) 然後恢復備份,(注意:恢復是斷開log explorer與資料庫的連接,或連接到其他數據上,
否則會出現資料庫正在使用無法恢復)
恢復完後,再打開log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,選擇yes 就看不到剛才在2中修改的日誌記錄,所以無法做恢復.
4) 不要用SQL的備份功能備份,搞不好你的日誌就破壞了.
正確的備份方法是:
停止SQL服務,復制數據文件及日誌文件進行文件備份.
然後啟動SQL服務,用log explorer恢復數據
② 求:《資料庫》1、什麼是事務日誌,事務日誌包括什麼內容 2、了解SQL的GRANT 和REVOKE語句
事務日誌是一個與資料庫文件分開的文件。它存儲對資料庫進行的所有更改,並全部記錄插入、更新、刪除、提交、回退和資料庫模式變化。事務日誌還稱作前滾日誌或重做日誌。
事務日誌是備份和恢復的重要組件,也是使用 SQL Remote 或 [復制代理] 復制數據所必需的。
在預設情況下,所有資料庫都使用事務日誌。事務日誌的使用是可選的,但是,除非您因特殊原因而不使用,否則您應始終使用它。運行帶有事務日誌的資料庫可提供更強的故障保護功能、更好的性能以及數據復制功能。
每個 Microsoft® SQL Server™ 2000 資料庫都有事務日誌,用以記錄所有事務和每個事務對資料庫所做的修改。記錄事務及其修改有三個作用:
恢復個別的事務。
如果應用程序發出 ROLLBACK 語句,或者 SQL Server 檢測到錯誤(例如失去與客戶端的通訊),就使用日誌記錄回滾未完成的事務所做的修改。
SQL Server 啟動時恢復所有未完成的事務。
當運行 SQL Server 的伺服器發生故障時,資料庫可能處於這樣的狀態:還沒有將修改從高速緩沖存儲器寫入數據文件,在數據文件內有未完成的事務所做的修改。當啟動 SQL Server 的復本時,它對每個資料庫執行恢復操作。前滾日誌中記錄的、可能尚未寫入數據文件的每個修改。然後回滾在事務日誌中找到的每個未完成的事務,以確保資料庫的完整性。
將還原的資料庫前滾到故障點。
丟失資料庫(在沒有 RAID 驅動器的伺服器上,硬碟驅動器出現故障時可能會出現這種情況)後,可以將資料庫還原到故障點。首先還原上一次的完整資料庫備份或差異資料庫備份,然後將事務日誌備份序列還原到故障點。當還原每個日誌備份時,SQL Server 重新應用日誌中記錄的所有修改以前滾所有事務。當最後的日誌備份還原後,SQL Server 將使用日誌信息回滾到該點未完成的所有事務。
SQL Server 2000 事務日誌的特點是:
事務日誌不是作為一個表實現,而是作為單獨的文件或資料庫內的一組文件實現。日誌高速緩存與數據頁的高速緩沖存儲器分開管理,從而使資料庫引擎內的編碼更簡單、更快速和更可靠。
日誌記錄和頁的格式不必遵守數據頁的格式。
事務日誌可以在幾個文件上實現。可以根據需要定義這些文件為自動增長。這樣可減少事務日誌內空間不足的可能性,同時減少管理開銷。
截斷日誌中未用部分的機制速度快且對事務吞吐量影響最小。
GRANT是授予許可權
REVOKE是撤銷許可權
GRANT
名稱
GRANT — 賦予一個用戶,一個組或所有用戶訪問許可權
語法
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }
輸入
privilege
可能的許可權有:
SELECT
訪問聲明的表/視圖的所有列/欄位.
INSERT
向聲明的表中插入所有列欄位.
UPDATE
更新聲明的表所有列/欄位.
DELETE
從聲明的表中刪除所有行.
RULE
在表/視圖上定義規則 (參見 CREATE RULE 語句).
ALL
賦予所有許可權.
object
賦予許可權的對象名.可能的對象是:
table
view
sequence
PUBLIC
代表是所有用戶的簡寫.
GROUP group
將要賦予許可權的組 group .
username
將要賦予許可權的用戶名.PUBLIC 是代表所有用戶的簡寫.
輸出
CHANGE
如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所聲明的對象不可用或不可能對聲明的組或用戶賦予許可權.
描述
GRANT 允許對象的創建者給某用戶或某組或所有用戶(PUBLIC)某些特定的許可權.對象創建後,除了創建者外,除非創建者賦予(GRANT)許可權,其他人沒有訪問對象的許可權.
一旦用戶有某對象的許可權,他就可以使用那個特權.不需要給創建者賦予(GRANT)對象的許可權,創建者自動擁有對象的所有許可權,包括刪除它的許可權.
注意
目前,要想在 Postgres 裡面只賦予幾列許可權,你必須創建一個包含那幾列的視圖(view),然後把許可權賦予那幾個視圖。
使用 psql \z 命令獲取關於現存對象許可權的更多信息:
Database = lusitania
+------------------+---------------------------------------------+
| Relation | Grant/Revoke Permissions |
+------------------+---------------------------------------------+
| mytable | {"=rw","miriam=arwR","group todos=rw"} |
+------------------+---------------------------------------------+
Legend:
uname=arwR -- privileges granted to a user
group gname=arwR -- privileges granted to a GROUP
=arwR -- privileges granted to PUBLIC
r -- SELECT
w -- UPDATE/DELETE
a -- INSERT
R -- RULE
arwR -- ALL
參考 REVOKE 語句廢除訪問許可權.
用法
給所有用戶向表 films 插入記錄的許可權:
GRANT INSERT ON films TO PUBLIC;
賦予用戶 manuel 操作視圖 kinds 的所有許可權:
GRANT ALL ON kinds TO manuel;
兼容性
SQL92
SQL92 GRANT 語法允許對表中的某單獨列/欄位設置許可權,並且允許設置一許可權以賦予別人相同許可權:
GRANT privilege [, ...]
ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
這些欄位與 Postgres 實現是兼容的,除了下面一些例外:
privilege
SQL92 允許聲明附加的許可權:
SELECT
REFERENCES
允許在一個聲明的表的完整性約束中使用某些或全部列/欄位.
USAGE
允許使用一個域,字元集,集合或事務.如果聲明的對象不是表/視圖, privilege 只能聲明為 USAGE.
object
[ TABLE ] table
SQL92 允許一個附加的非功能性關鍵字 TABLE.
CHARACTER SET
允許使用聲明的字元集.
COLLATION
允許使用聲明的集合序列.
TRANSLATION
允許使用聲明的字元集轉換.
DOMAIN
允許使用聲明的域.
WITH GRANT OPTION
允許向別人賦予同樣許可權.
③ 如何查看db2的資料庫的日誌文件
查看db2的資料庫的日誌文件:
實例日誌在sqllib/db2mp/db2diag.log,記錄起停、出錯警告信息。
資料庫的事務日誌通過db2 get db cfg for <dbname>,看NEWLOGPATH下面一行。
(3)查看資料庫事務日誌擴展閱讀:
在日常DB2的維護中,transaction log full是比較常見的問題,日誌空間使用情況也是我們比較重視的問題,如果日誌是單獨的文件系統分區,在操作系統上即可看到日誌空間使用情況,對日誌使用情況進行監控,可以看到如下信息:
$ df -g
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/db2inst1_log01 60.00 54.50 10% 1458 1% /db2inst1_log01
④ 如何使用事務日誌恢復sql server資料庫
恢復過程
以資料庫恢復模式設為FULL為例:
恢復過程的第一步是執行尾日誌備份,(BACKUP LOG Student TO DISK='E:stulog.dmp' ) 。
在恢復一個資料庫之前,為保證上次備份之後發生改變的記錄都包含在恢復過程之中,需要執行這種類型的備份。
下一步,查找資料庫備份文件在機器或網路中的存儲位置。
如果要在另一台伺服器上恢復資料庫,最好是把這些文件復制到目標伺服器中。在備份文件所在的位置,找出最後一個完整的資料庫備份(這些文件通常使用.bak為擴展名);恢復這個完整的備份。
下面的腳本將完整的備份文件應用於NewDatabase資料庫:
RESTOREDATABASENewDatabase
FROMDISK='D:.bak'
WITH
MOVE'PreviousDatabase'TO'D:DataFilesTestDatabase.mdf',
MOVE'PreviousDatabase_log'TO'D:DataFilesTestDatabase_Log.ldf',
NORECOVERY
這段腳本指出完整備份文件位於伺服器的D盤中,你正在使用備份文件恢復NewDatabase這個資料庫。
腳本中的語句將數據文件和日誌文件從完整備份文件轉移到TestDatabase資料庫的新文件中。腳本中的最後一個語句——NORECOVERY——非常重要。
NORECOVERY模式有三種選項,如下所示:
NORECOVERY:告訴SQL Server你沒有完成恢復資料庫的過程,隨後會出現恢復文件。當資料庫處於這種狀態時,資料庫還不能使用,因而不允許建立連接。
RECOVERY:告訴SQL Server你已經完成資料庫恢復過程,資料庫即將准備就緒。這是默認選項,也是最常用的選項。
STANDBY:告訴SQL Server當前資料庫還未為完成恢復做好准備,隨後可以使用日誌文件進行恢復。如果必要,你可以使用這個選項為恢復資料庫建立連接。但是,如果當前不存在連接,將來的事務日誌只能應用於資料庫。
一旦你使用NORECOVERY選項恢復了完整備份,你可以開始應用事務日誌備份或差異備份。
差異備份
差異備份是指對上次完整資料庫備份後資料庫發生的任何改變進行備份。如果有幾個差異備份,只需要恢復最後一個備份文件。在這種情況下,並不存在差異備份,因此可以直接轉向事務日誌備份。
事務日誌備份
事務日誌備份保留上次事務日誌備份後發生的所有事務的痕跡;它還允許把資料庫恢復到資料庫發生錯誤之前的一個時間點。事務日誌備份按順序發生,從而建立一個備份鏈。在把一連串事務日誌備份恢復到一個時間點時,事務日誌文件也必須按順序恢復。
當使用一個資料庫維護計劃來建立事務日誌備份時,事務日誌文件名中往往包含一個時間指示器。
下面的腳本使用NORECOVERY選項應用三個事務日誌備份,最後一個語句把資料庫恢復到最後一個事務日誌文件的結束點。
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup1.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup2.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup3.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup4.trn'
WITHRECOVERY
恢復到一個時間點
在上面的例子中,把資料庫恢復到最後一個事務日誌的結束點。
如果想把資料庫恢復到事務日誌結束前的某個特定的時間點,必須使用STOPAT選項。
下面的腳本把日誌序列中的第四個事務日誌恢復到4:01 AM——正好在資料庫出錯之前。
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup4.trn'
WITHSTOPAT=N'6/28/20074:01:45PM',RECOVERY
⑤ 如何查看sql2008資料庫的事務日誌文件
在SQL Server 7.0和SQL Server2000中,可以用下面的命令查看: DBCC log ( {dbiddbname}, [, type={01234}] ) 參數: Dbid or dbname - 任一資料庫的ID或名字 type - 輸出結果的類型: 0 - 最少信息(operation, context, transaction id) 1 - 更多信息(plus flags, tags, row length) 2 - 非常詳細的信息(plus object name, index name,page id, slot id) 3 - 每種操作的全部信息 4 - 每種操作的全部信息加上該事務的16進制信息 默認 type = 0 要查看MSATER資料庫的事務日誌可以用以下命令: DBCC log (master) 釋放日誌空間 1.清空日誌 DUMP TRANSACTION 庫名 WITH NO_LOG 2.截斷事務日誌: BACKUP LOG 資料庫名 WITH NO_LOG 3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件 --選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了 --選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了 也可以用SQL語句來完成 --收縮資料庫 DBCC SHRINKDATABASE(客戶資料) --收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles DBCC SHRINKFILE(1) 4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行) a.分離資料庫: 企業管理器--伺服器--資料庫--右鍵--分離資料庫 b.在我的電腦中刪除LOG文件 c.附加資料庫: 企業管理器--伺服器--資料庫--右鍵--附加資料庫 此法將生成新的LOG,大小隻有500多K 或用代碼: 下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。 a.分離 E X E C sp_detach_db @dbname = 'pubs' b.刪除日誌文件 c.再附加 E X E C sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 5.為了以後能自動收縮,做如下設置: 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮" --SQL語句設置方式: E X E C sp_dboption '資料庫名', 'autoshrink', 'TRUE' 6.如果想以後不讓它日誌增長得太大 企業管理器--伺服器--右鍵資料庫--屬性--事務日誌 --將文件增長限制為xM(x是你允許的最大數據文件大小) --SQL語句的設置方式: alter database 資料庫名 modify file(name=邏輯文件名,maxsize=20) 特別注意: 請按步驟進行,未進行前面的步驟,請不要做後面的步驟 否則可能損壞資料庫. 一般不建議做第4,6兩步 第4步不安全,有可能損壞資料庫或丟失數據 第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復. 另外提供一種更簡單的方法,建議大家使用。 更簡單的方法: 1。右建資料庫屬性窗口--故障還原模型--設為簡單 2。右建資料庫所有任務--收縮資料庫 3。右建資料庫屬性窗口--故障還原模型--設為大容量日誌記錄
⑥ 如何讀懂SQL Server的事務日誌
如何讀懂SQL Server的事務日誌
SQL Server事務日誌主要是用來記錄所存在事務對資料庫所做的修改,可能系統出現故障,它用成為最新數據的唯一來源。日誌的操作常存在下面幾個應用:
一、事務日誌文件LDF的丟失
當不小卸載或者LDF文件丟失的時候,資料庫只剩下MDF文件,這種時候直接通過附加MDF是不可以恢復資料庫的,那大家怎麼樣才能恢復資料庫呢?大家可以把SQL Server的日誌文件分為兩種形式:一類是無活動事務的日誌,另一類是存在活動事務的日誌,大家分別參考兩種情況來進行資料庫恢復。
1、無活動事務的日誌恢復 當文件並無發生活動性的日誌,大家就可以很簡單的使用MDF文件就可以直接恢復資料庫了,具體操作做法如下:
1)資料庫要是無日誌,就會處於臵疑的狀態,大家先可以通過企業管理器中在對應資料庫中點擊右鍵,接下來在‚所存在任務‛下選擇‚分離資料庫‛把資料庫進行分離;
2)使用MDF文件附加資料庫生成新的日誌文件,可用企業管理器中資料庫點擊右鍵選擇‚所存在任務‛下的‚附加資料庫‛把資料庫附加上。
這種就可以直接恢復好資料庫了,而可能資料庫的日誌文件中含存在活動事務,使用此做法就不可以恢復資料庫,所以得使用下面的做法。
⑦ sql server 2000中,如何查詢事務日誌事務日誌有什麼作用
你好!
1.如果要看日誌內容,sql server下不直接支持,但是可以用LogExplorer(只支持2000)等工具來查看
如果你的意思是想看資料庫在執行什麼語句,可以用Sql profiler
菜單 Tool->Sql Server Profiler
進到Profiler的界面後新建一個跟蹤(new Trace),選擇好你的資料庫和相應的用戶、密碼,然後就可以看到所有傳到Sql Server來執行的語句了。
如果想更多的了解,可以去找些 Sql Server Profiler的資料看下,最好還是自己試幾下,操作很簡單,但是平時開發過程中調試很好用
2.每個 Microsoft® SQL Server™ 2000 資料庫都有事務日誌,用以記錄所有事務和每個事務對資料庫所做的修改。記錄事務及其修改有三個作用:
恢復個別的事務。
如果應用程序發出 ROLLBACK 語句,或者 SQL Server 檢測到錯誤(例如失去與客戶端的通訊),就使用日誌記錄回滾未完成的事務所做的修改。
SQL Server 啟動時恢復所有未完成的事務。
當運行 SQL Server 的伺服器發生故障時,資料庫可能處於這樣的狀態:還沒有將修改從高速緩沖存儲器寫入數據文件,在數據文件內有未完成的事務所做的修改。當啟動 SQL Server 的復本時,它對每個資料庫執行恢復操作。前滾日誌中記錄的、可能尚未寫入數據文件的每個修改。然後回滾在事務日誌中找到的每個未完成的事務,以確保資料庫的完整性。
將還原的資料庫前滾到故障點。
丟失資料庫(在沒有 RAID 驅動器的伺服器上,硬碟驅動器出現故障時可能會出現這種情況)後,可以將資料庫還原到故障點。首先還原上一次的完整資料庫備份或差異資料庫備份,然後將事務日誌備份序列還原到故障點。當還原每個日誌備份時,SQL Server 重新應用日誌中記錄的所有修改以前滾所有事務。當最後的日誌備份還原後,SQL Server 將使用日誌信息回滾到該點未完成的所有事務。
SQL Server 2000 事務日誌的特點是:
事務日誌不是作為一個表實現,而是作為單獨的文件或資料庫內的一組文件實現。日誌高速緩存與數據頁的高速緩沖存儲器分開管理,從而使資料庫引擎內的編碼更簡單、更快速和更可靠。
日誌記錄和頁的格式不必遵守數據頁的格式。
事務日誌可以在幾個文件上實現。可以根據需要定義這些文件為自動增長。這樣可減少事務日誌內空間不足的可能性,同時減少管理開銷。
截斷日誌中未用部分的機制速度快且對事務吞吐量影響最小。