SQL server常用操作

2022-07-17 07:15:10 字數 4814 閱讀 7544

--

備份declare @sql varchar(

8000

) set

@sql='

backup database mis to disk=

''d:\databack\mis\mis'+

rtrim(convert(varchar,getdate(),

112))+'

.bak

'''exec(@sql)

--刪除15天前備份檔案

set@sql='

del d:\databack\mis\mis'+

rtrim(convert(varchar,getdate()-15

,112))+

'.bak

'''exec master..xp_cmdshell @sql

--清除日誌

dump transaction databasename with no_log

backup log databasename with no_log

--檢視資料庫裡使用者和程序的資訊

sp_who

--檢視sql server資料庫裡的活動使用者和程序的資訊

sp_who

'active'--

檢視sql server資料庫裡的鎖的情況

sp_lock

--程序號

--50是sql server系統內部用的,程序號大於的才是使用者的連線程序.

--spid是程序編號,dbid是資料庫編號,objid是資料物件編號

--收縮資料庫日誌檔案的方法

--收縮簡單恢復模式資料庫日誌,收縮後@database_name_log的大小單位為m

backup log @database_name with no_log

dbcc shrinkfile (@database_name_log, 5)

--分析sql server sql 語句的方法:

setstatistics time

setstatistics io

--圖形方式顯示查詢執行計畫

--在查詢分析器

->

查詢->

顯示估計的評估計畫(d)

-ctrl

-l 或者點選工具欄裡的圖形

--文字方式顯示查詢執行計畫

setshowplan_all

setshowplan_text

setstatistics profile

/*

******************完整備份作業******************

*/--

完整備份,每週一次

use master

godeclare @str varchar(

100)

set@str='

d:\dbtext\jgj\dbabak\fullbak'+

replace(replace(replace(convert(varchar,getdate(),

20),'-

',''),''

,''),'

:',''

)+'.bak

'backup database [demo] to disk

=@str

with retaindays=15

,noformat,noinit,

name=n

'demo完整備份

',skip,norewind,

nounload,stats=10

go/*

******************差異備份作業******************

*/--

截斷日誌

use master

gobackup log demo with no_log

go--

收縮日誌檔案

use demo

godbcc shrinkfile (n

'demo_log',

0,truncateonly)

go--

差異備份,每天一次

use master

godeclare @str varchar(

100)

set@str='

d:\dbtext\jgj\dbabak\diffbak'+

replace(replace(replace(convert(varchar,getdate(),

20),'-

',''),''

,''),'

:',''

)+'.diff

'backup database [demo] to disk

=@str

with differential,retaindays=8

,noformat,noinit,

name=n

'demo差異備份

',skip,norewind,

nounload,stats=10

go/*

*****************日誌備份作業******************

*/--

日誌備份,每小時一次

use demo

godeclare @str varchar(

100)

set@str='

d:\dbtext\jgj\dbabak\logbak'+

replace(replace(replace(convert(varchar,getdate(),

20),'-

',''),''

,''),'

:',''

)+'.trn

'backup log [demo] to disk

=@str

with retaindays=3

,noformat,noinit,

name=n

'demo日誌備份

',skip,norewind,

nounload,stats=10

go--

刪除過期的備份檔案,每天兩次

declare @str varchar(

100),@dir varchar(

100),@filename varchar(30)

set@dir='

del d:\dbtext\jgj\dbabak\'

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

--

如何刪除 sql2005 過期的資料庫備份檔案呢?

在 sql2005 資料庫中,不可以自動刪除過期的備份檔案,所以借用第三方外掛程式完成此功能。

--方式一:通過 forfiles 刪除指定目錄下過期的備份檔案

目的:刪除目錄 i: \sqldataup 中天前的 . bak 檔案:

步驟:

1、定義 forfiles 批處理指令碼如下:

c: \

>

forfiles

/p i: \sqldataup /m

*. bak /c

"cmd /c del /q @path"/

d -5如果執行成功則返回當前碟符 c: \

>

。 --

如果沒有需要刪除的檔案則返回資訊錯誤 : 用指定的搜尋標準沒有找到檔案。比如:

--c:\

>

forfiles

/p i:\sqldataup /m

*.bak /c

"cmd /c del /q @path"/

d -5--

錯誤 : 用指定的搜尋標準沒有找到檔案。

2、通過計畫任務呼叫批處理指令碼如圖所示,圖太長請看這裡

3、當然也可以用 sqlagent 呼叫 cmdexec 完成批處理作業。

方式二:如果在 sql2008 中因為預設安裝 powershell

1.0程式,故可以用 powershell 編寫指令碼來完成定時刪除過期檔案。

SqlServer日期函式常用操作

函式 描述getdate 返回當前日期和時間 datepart 返回日期 時間的單獨部分 dateadd 在日期中新增或減去指定的時間間隔 datediff 返回兩個日期之間的時間 convert 用不同的格式顯示日期 時間 select datename hour,getdate select d...

sql server常用操作之增刪改

if exists select from sysdatabases where name w 查詢有沒有資料庫 w 有則刪除,無則不執行。drop database w 刪除 資料庫 名稱.gocreate database stuinfo gouse stuinfo create table s...

sql server2000 系統表常用操作

得到資料庫中所有使用者表 select name from sysobjects where xtype u and name dtproperties order by name 得到資料庫中所有使用者檢視 select name from sysobjects where xtype v and...