數據庫日常維護常用的腳本部分收錄

 

      有些數據庫語句可能平時用得不多,所以使用的時候總是難免上網查詢,略嫌麻煩,今日在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 simple

       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}(寫語句的時候只需要寫明是on或者off即可)

  set statistics io {on | off}

8、  文本方式顯示查詢執行計劃:

  set showplan_all {on | off}

  set showplan_text { on | off }

  set statistics profile { on | off }

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

  GO

10、  刪除過期的備份文件,並設定每天兩次:

  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

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

 

 

原文地址:http://www.cnblogs.com/Jennifer/archive/2011/05/12/2044139.html

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章