㈠ 如何查看sql server2008日誌文件的內容
定期分析sqlserver日誌是DBA很重要的任務,那如何才能查看sqlserver日誌呢?
在SQL Server 7.0和SQL Server2000中,可以用下面的命令查看:
DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )
參數:
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)
㈡ 如何查看sql資料庫操作日誌
請參照以下步驟查看sql資料庫操作日誌。
1、首先在電腦上打開sql server軟體,進入軟體載入界面。
㈢ 如何查看sqlserver 日誌
1、 在SQL Server 7.0和SQL Server2000中,可以用下面的命令查看:
DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )
參數:
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)
㈣ 如何查看sqlserver日誌的方法
方法一:
可以通過執行該命令來查看錯誤日誌信息:exec xp_readerrorlog;
方法二:
在SQL SERVER Management Studio中連接該sql server實例,object Explorer中查找Management->SQL Server logs->右鍵選view-》選擇要看的日誌信息(sql server log or sql server and Windows log);
方法三:
去安裝路徑下去找你的log文件,默認實例路徑如下
driver:\SQL Server 2008 R2\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG。
㈤ SQLserver資料庫備份後,怎麼查詢備份的日誌
SQL Server的備份有三種形式:
一是全備份(full backup)
這個備份裡麵包含的內容是值得商榷的,我們知道資料庫有兩種文件,數據文件與日誌文件,全備份是不是將所有的數據文件與日誌文件打包,備份成一個文件? 那麼還原的時候是不是需要做恢復,將備份過後發生的事務接著備份時間點重新執行一邊? 上面的問題細想都是肯定的。全備份做的事情,就是將所有的緩存先flush到磁碟上,不管在進行的事務是否提交,這樣保證了日誌的連續性,數據與日誌的一致性,如果事務沒提交 ,在日誌文件上的標記是active的,這段日誌也就不會被清空,下次恢復的時候,就從這段日誌開始,接著使用新的日誌執行。因此 全備份之前肯定會執行一次checkpoint;、
二是差異備份(differential backup)
這個備份會不會也重復full backup的過程,先執行checkpoint,然後再將上一次備份之後,發生數據頁變化的這些數據頁都備份起來,這部分備份就不會有日誌。但是和全備份一樣,備份的容積體量比較大,差異備份備份的是數據頁,不管這一頁是不是只有一條數據更改了,還是全部更改了;
三是日誌備份(transaction log backup)
日誌備份中需要注意的就是對未提交事務的理解,沒有提交的事務其實還是佔用日誌文件的VLF,shrink並不能回收日誌空間;提交事務的日誌如被備份之後,就會將日誌VLF打上unactive或者truncated標記,這個時候執行shrink就可以回收這部分日誌VLF了。日誌備份體量小,比較適合頻率高的執行,比如每5分鍾執行一次。
全備份:
全備份用到的命令,涉及到兩方面的參數,一是指定相應的備份設備,可以是磁碟,也可以是磁帶;另一方面 就是備份可用的選項,比如是否壓縮,是否加密。
BACKUP DATABASE database
TO backup_device [ ,...n ]
[ WITH with_options [ ,...o ] ] ;
備份設備很講究,可以事先定義好邏輯設備,也可以直接指定物理設備。磁帶備份機倒是沒見過,但是常規的磁碟備份還是可以討論一下的:
我們可以將一個本機帶路徑的物理文件名指定為備份設備:
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup.bck';
也可以將網路上的一個帶路徑的物理文件名指定為備份設備:
backup database AdventureWorks2012
to disk = '\BackupSystemBackupDisk1AW_backupsAdventureWorksData.Bak';
這里有個有趣的現象,如果我們在全備份之後 ,沒有備份好日誌,這個時候故障突然發生了,我們需要作恢復,但是恢復的時候因為會重寫日誌,這樣就會丟失數據,如果不採取額外地措施,系統是會報錯的:
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup.bck'
Msg 3159, Level 16, State 1, Line 6
The tail of the log for the database 「lenistest」 has not been backed
up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains
work you do not want to lose. Use the WITH REPLACE or WITH STOPAT
clause of the RESTORE statement to just overwrite the contents of the
log.
Msg 3013, Level 16, State 1, Line 6
RESTORE DATABASE is terminating abnormally.
所以如果對丟失的數據不關心或者認為不會丟失數據,可以採用with replace選項來重寫原來的日誌文件進行強制恢復。
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup.bck'
with replace;
差異備份:
差異備份相對全備份,優越的地方在於備份數據量少,但是有趣的是差異備份不能獨立存在(日誌備份也不能獨立存在,他倆只能依附於全備份,也就是說在執行差異備份和日誌備份的時候,必須先有一個全備份做好在那裡), 差異備份必須以一個全備份做基準,在這基礎之上再判斷哪些數據頁是有過更新的,這些更新的數據頁計算出來並被備份起來。
use master;
go
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup.bck';
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup.bck'
with differential;
假如我們沒有事先做好全備份,就直接作差異備份了,那麼這是不成功的:
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup2.bck'
with differential;
Msg 3035, Level 16, State 1, Line 11
Cannot perform a differential backup for database 「lenistest」, because
a current database backup does not exist. Perform a full database
backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL
option.
Msg 3013, Level 16, State 1, Line 11
BACKUP DATABASE is terminating abnormally.
日誌備份:
日誌備份相對差異備份來說,體量更小,同樣它也需要全備份事先存在:
backup log lenistestto disk = 'E:Data_BUlenistest5__backup.bck';
假如我沒有事先做好全備份,我們看看直接備份日誌會出現什麼結果:
Msg 4214, Level 16, State 1, Line 15
BACKUP LOG cannot be performed because there is no current database
backup.
Msg 3013, Level 16, State 1, Line 15
BACKUP LOG is terminating abnormally.
提示先做全備份!
備份我們都討論完了,接下來我們看看還原。還原通常有兩個步驟,一是還原,二是恢復。當然我們也可以直接還原不恢復,但是可能會丟失數據,除非全備份之後 ,沒有任何操作。假設我們一天一個全備份,每15分鍾做一個差異備份 ,每5分鍾做一個日誌備份,我們該如何還原我們的資料庫呢?
通常我們首先要知道我們的備份文件名或者物理路徑,這個地方涉及到很多術語很難理解,比如說backup device, backupset, backup media, media set ,media family.
MSDN上有一個解釋,先看這個腳本:
backup database AdventureWorks2012
to tape = '\. ape0'
, tape = '\. ape1'
, tape = '\. ape2'
with format
, medianame = 'MyAdvWorks_MediaSet_1';
解釋說到,這個備份操作產生了一個 media set, 這個media set就是命名為MyAdvWorks_MediaSet_1, 這個media set還有個media header, media header一旦生成,就可以往裡面寫入備份文件了。這段腳本也同時生成了一個橫跨三個tape的備份文件, 他們統稱為backup set.
當我們指定3個backup device作為backup set(備份集)並且執行第一次全備份的時候,接下來所有的備份都需要同時指定這3個backup device作為backup set:
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
with format
, medianame = 'lenistestbackupset';
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
with noinit
, differential
, medianame = 'lenistestbackupset';
Msg 3231, Level 16, State 1, Line 10
The media loaded on 「E:Data_BUlenistest5__backup01.bck」 is formatted
to support 3 media families, but 2 media families are expected
according to the backup device specification.
Msg 3013, Level 16, State 1, Line 10
BACKUP DATABASE is terminating abnormally.
上面我先作了一次全備份,指定了三個backup device作為一份backup set, 接下來作差異備份的時候,我只指定了其中兩個backup device作為backup set, 操作失敗,提示就是少了一個backup device.
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
with noinit
, differential
, medianame = 'lenistestbackupset';
這次我們指定了同樣個數的backup device,但backup device的順序顛倒了一下,操作成功。
到目前為止,我們的腳本已經新建了 1 個media set,名為 lenistestbackupset , 2 個backup set, 第一個backup set是全備份的backup set,另外一個backup set是差異備份。所以每一次備份都會產生一個backup set. Media set產生的時間則是第一次給資料庫作全備份的時候。
這個時候我們需要恢復資料庫,那麼第一步就是要先還原全備份,但是先不恢復,等全備份還原過後,再用差異備份做恢復:
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
with file = 1
, replace
, norecovery;
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
with file = 2
, recovery;
這里一定是用replace來重寫日誌。
select mf.media_set_id
, isnull(ms.name, 'no media name') as media_name
, mf.physical_device_name
, mf.family_sequence_number
, mf.media_family_id
, bs.database_name
, bs.backup_start_date
, bs.backup_finish_date
from backupmediafamily mf
inner join backupset bs
on mf.media_set_id = bs.media_set_id
left join backupmediaset ms
on bs.media_set_id = ms.media_set_id
where bs.database_name = 'lenistest';
上面的腳本可以抓出來這些media family, media set, backup set的信息,如果像上面的例子一樣, 我們用3個backup device來承載備份,那麼這3個backup device組成了一個media family, 按照family_sequence_number來編排,1,2,3。
下面實現一個備份到恢復的全過程例子,分別在full backup, differential backup, log backup之前各出入同樣的數據,看看是不是還原的時候,能正確還原過來:
insert into dbo.dataloading
(
object_id
, object_name
)
select object_id
, name as object_name
from sys.objects;
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
with format
, medianame = 'lenistestbackupset';
insert into dbo.dataloading
(
object_id
, object_name
)
select object_id
, name as object_name
from sys.objects;
backup database lenistest
to disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
with noinit
, differential
, medianame = 'lenistestbackupset';
insert into dbo.dataloading
(
object_id
, object_name
)
select object_id
, name as object_name
from sys.objects;
backup log lenistest
to disk = 'E:Data_BUlenistest5__backup01.bck'
, disk = 'E:Data_BUlenistest5__backup03.bck'
, disk = 'E:Data_BUlenistest5__backup02.bck'
with noinit
, medianame = 'lenistestbackupset';
接著我們做還原與恢復:
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup01.bck', disk = 'E:Data_BUlenistest5__backup03.bck', disk = 'E:Data_BUlenistest5__backup02.bck'
with file = 1
, replace
, norecovery;
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup01.bck', disk = 'E:Data_BUlenistest5__backup03.bck', disk = 'E:Data_BUlenistest5__backup02.bck'
with file = 2
, norecovery;
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup01.bck', disk = 'E:Data_BUlenistest5__backup03.bck', disk = 'E:Data_BUlenistest5__backup02.bck'
with file = 3
, recovery;
這里的file選項就是backup set選項,表示第一個備份集,第二個備份集,第三個備份集。如果想還原到最新的故障發生時間點,前面的restore都不能recovery,只有在最後的時候才能作recovery.
如果我們只想恢復全備份的數據,只要執行recovery就可以了,但是數據肯定是少了:
restore database lenistest
from disk = 'E:Data_BUlenistest5__backup01.bck', disk = 'E:Data_BUlenistest5__backup03.bck', disk = 'E:Data_BUlenistest5__backup02.bck'
with file = 1
, replace
, recovery;
㈥ 如何查看資料庫日誌
1、首先,打開計算機上的sqlserver軟體,進入軟體載入界面。
㈦ 如何查看sql server 日誌
您好,很高興為您解答。
可以降到2005 用log explorer看下的哈
使用Log Explorer查看和恢復數據
Log Explorer 4.1.可用於SQL Server2005的日誌查看工具
使用方法:
打開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的備份功能備份,搞不好你的日誌就破壞了.
㈧ sqlserver日誌查看操作的是哪列
查看sql資料庫操作日誌的方法步驟:1、用windows身份驗證登陸資料庫,點擊【連接】2、展開資料庫伺服器下面的【管理】【SQLServer日誌】3、雙擊【當前】可以打開【日誌文件查看器】裡面有所有的運行日誌
SQL是高級的非過程化編輯語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的sql語言作為數據輸入與管理的介面。
㈨ 如何查看SQL server 2008的操作日誌
定期分析sqlserver日誌是DBA很重要的任務,那如何才能查看sqlserver日誌呢? 在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)