資料庫日常維護常用的指令碼部分收錄

2021-08-26 04:41:46 字數 2763 閱讀 9671

有些資料庫語句可能平時用得不多,所以使用的時候總是難免上網查詢,略嫌麻煩,今日在csdn論壇看到有貼收錄這些語句,就順手牽羊copy了乙份,本想 copy了就結束了,但和部分朋友一樣,真正用到它們的時候有時會發現難免會出錯,於是,擇日不如撞日,就在今天花點時間在sql server 2008中執行試試。之前並沒怎麼注意sql2008的語法與之前版本的不同,因為常用的select等語句都一樣,一直以為2008應該與2005的版本幾乎無差。不料這一試,果然試出了問題,這才發現,以前從書本上見過的backup語句和dump語句已經在2008裡面消失了……

廢話不多說,把收錄的語句及備註貼上來,便於以後查詢使用~~

1、 資料庫備份操作:

declare @sql varchar(8000)

set @sql='backup database smallerp to disk=''d:\'+rtrim(convert(varchar,getdate(),112))+'.bak'''

exec(@sql);(備註:引號不可缺少任意乙個,否則會報錯)

2、 刪除5天前的備份檔案:

declare @sql varchar(8000)

set @sql='del d:\'+rtrim(convert(varchar,getdate()-5,112))+'.bak'''

exec master..xp_cmdshell @sql;(備註:xp_cmdshell預設該元件會被阻止,需要先啟用它才可正常操作:使用如下語句將其啟用exec sp_configure 'show advanced   options', 1;reconfigure;exec sp_configure 'xp_cmdshell', 1;reconfigure;)

3、 收縮資料庫語句:

dump transaction smallerp with no_log;(備註:這句話中會提示transaction附近有語法錯誤,原來在sql2008中已經不再使用此法來收縮資料庫了。而使用:alter,   使用方法如下:alter database smallerp set recovery ******

alter database smallerp set recovery full

dbcc shrinkdatabase(smallerp,0)

backup log smallerp with no_log;(備註:這句話執行的時候會報錯:此語句不支援乙個或多個選項(no_log),原因也是因為sql2008已經不再支援這種寫法了。)

4、 檢視資料庫裡活動使用者和程序資訊:

sp_who 'active';(備註:如果只是這麼寫的話會提示sp_who附近有語法錯誤,但執行的時候可以查到資料,如果在前面加乙個exec,則不再提示錯誤。且1—50的程序號   為sql server系統內部用的,只有大於50的程序號才是使用者的連線程序。spid是程序號,dbid是資料庫編號,objid是資料物件編號)

5、 檢視資料庫裡使用者和程序資訊:

exec sp_who;

6、 檢視資料庫裡的鎖情況:

exec sp_lock;

7、 分析sql server裡sql語句的方法:

set statistics time (寫語句的時候只需要寫明是on或者off即可)

set statistics io

8、 文字方式顯示查詢執行計畫:

set showplan_all

set showplan_text

set statistics profile

9、 差異備份:

declare @str varchar(100)

set @str='d:\'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'

backup database smallerp to disk=@str

with differential,retaindays=8,noformat,noinit,

name=n'demo差異備份',skip,norewind,

nounload,stats=10

go10、 刪除過期的備份檔案,並設定每天兩次:

declare @str varchar(100),@dir varchar(100),@filename varchar(30)

set @dir='del d:\ '

set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)

set @str=@dir+'fullbak'+@filename+'*.bak'

exec xp_cmdshell @str

set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)

set @str=@dir+'diffbak'+@filename+'*.diff'

exec xp_cmdshell @str

set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)

set @str=@dir+'logbak'+@filename+'*.trn'

exec xp_cmdshell @str

先這些吧,貌似一般不用又相對比較常用~

日常檢查和維護資料庫

1.檢日誌查作業系統 more var log messages 記錄作業系統常見的系統和服務錯誤資訊 more var log lastlog 使用者最後一次登入的時間,登入ip more var log secure 記錄使用者和工作組變化情況,使用者登入認證情況 more var log cr...

Oracle 資料庫日常維護 1

七 資料庫壞塊的處理 當 oracle資料庫出現壞塊時,oracle會在警告日誌檔案 alert sid.log 中記錄壞塊的資訊 ora 01578 oracle data block corrupted file 7,block ora 01110 data file oracle1 orada...

資料庫日常應用維護文件

一 啟動和停止資料庫 1 正常生產環境下不建議隨意啟動和停止資料庫 2 可以使用集群啟動和停止資料庫。cmruncl 或是cmhaltcl f 3 也可以手工方式啟 停資料庫 用oracle使用者登入,執行 sqlplus nolog 在sql 提示符下輸入conn as sysdba 然後執行st...