SQL Server 2000常用命令,語(yǔ)法使用方法
2013/2/6 17:34:421480 閱讀
(1) 數(shù)據(jù)記錄篩選:
sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 in ('值1','值2','值3')"
sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2"
(2) 更新數(shù)據(jù)記錄:
sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式"
sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式"
(3) 刪除數(shù)據(jù)記錄:
sql="delete from 數(shù)據(jù)表 where 條件表達(dá)式"
sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除)
(4) 添加數(shù)據(jù)記錄:
sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)
(5) 數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):
AVG(字段名) 得出一個(gè)表格欄平均值
COUNT(*|字段名) 對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)
MAX(字段名) 取得一個(gè)表格欄最大的值
MIN(字段名) 取得一個(gè)表格欄最小的值
SUM(字段名) 把數(shù)據(jù)欄的值相加
引用以上函數(shù)的方法:
sp_helpdb 查看數(shù)據(jù)庫(kù)
go
use
數(shù)據(jù)庫(kù)名
go
select * from sysobjects where xtype='u' 查看數(shù)據(jù)庫(kù)中有什么數(shù)據(jù)表
go
sp_help 數(shù)據(jù)表名 查看數(shù)據(jù)表的結(jié)構(gòu)
go
sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。
(5) 數(shù)據(jù)表的建立和刪除:
CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長(zhǎng)度),字段2 類型2(長(zhǎng)度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數(shù)據(jù)表名稱 (永久性刪除一個(gè)數(shù)據(jù)表)
4. 記錄集對(duì)象的方法:
rs.movenext 將記錄指針從當(dāng)前的位置向下移一行
rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行
rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行
rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行
rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行
rs.absolutepage=N 將記錄指針移到第N頁(yè)的第一行
rs.pagesize=N 設(shè)置每頁(yè)為N條記錄
2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
說(shuō)明:增加一個(gè)欄位(沒(méi)有刪除某個(gè)欄位的語(yǔ)法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
說(shuō)明:更改表得的定義把某個(gè)欄位設(shè)為主鍵。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
說(shuō)明:把主鍵的定義刪除。
3、建立索引
CREATE INDEX index_name ON table_name (column_name)
說(shuō)明:對(duì)某個(gè)表格的欄位建立索引以增加查詢時(shí)的速度。
4、刪除
DROP table_name
DROP index_name
二、的資料形態(tài) DATATYPEs
smallint
16 位元的整數(shù)。
interger
32 位元的整數(shù)。
decimal(p,s)
p 精確值和 s 大小的十進(jìn)位整數(shù),精確值p是指全部有幾個(gè)數(shù)(digits)大小值,s是指小數(shù)
點(diǎn)後有幾位數(shù)。如果沒(méi)有特別指定,則系統(tǒng)會(huì)設(shè)為 p=5; s=0 。
float
32位元的實(shí)數(shù)。
double
64位元的實(shí)數(shù)。
char(n)
n 長(zhǎng)度的字串,n不能超過(guò) 254。
varchar(n)
長(zhǎng)度不固定且其最大長(zhǎng)度為 n 的字串,n不能超過(guò) 4000。
graphic(n)
和 char(n) 一樣,不過(guò)其單位是兩個(gè)字元 double-bytes, n不能超過(guò)127。這個(gè)形態(tài)是為
了支援兩個(gè)字元長(zhǎng)度的字體,例如中文字。
vargraphic(n)
可變長(zhǎng)度且其最大長(zhǎng)度為 n 的雙字元字串,n不能超過(guò) 2000。
date
包含了 年份、月份、日期。
time
包含了 小時(shí)、分鐘、秒。
timestamp
包含了 年、月、日、時(shí)、分、秒、千分之一秒。
三、資料操作 DML (Data Manipulation Language)
資料定義好之後接下來(lái)的就是資料的操作。資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update) 、刪除資料(delete)四種模式,以下分 別介紹他們的語(yǔ)法:
1、增加資料:
INSERT INTO table_name (column1,column2,...)
valueS ( value1,value2, ...)
說(shuō)明:
1.若沒(méi)有指定column 系統(tǒng)則會(huì)按表格內(nèi)的欄位順序填入資料。
2.欄位的資料形態(tài)和所填入的資料必須吻合。
3.table_name 也可以是景觀 view_name。
INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
說(shuō)明:也可以經(jīng)過(guò)一個(gè)子查詢(subquery)把別的表格的資料填入。
2、查詢資料:
基本查詢
SELECT column1,columns2,...
FROM table_name
說(shuō)明:把table_name 的特定欄位資料全部列出來(lái)
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
三)交叉連接
交叉連接不帶WHERE 子句,它返回被連接的兩個(gè)表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)
據(jù)行數(shù)等于第一個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)。
例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數(shù)將等
于6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
UNION運(yùn)算符可以將兩個(gè)或兩個(gè)以上上SELECT語(yǔ)句的查詢結(jié)果集合合并成一個(gè)結(jié)果集合顯示,即執(zhí)行聯(lián)合查詢。UNION的語(yǔ)法格式為:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement為待聯(lián)合的SELECT查詢語(yǔ)句。
ALL選項(xiàng)表示將所有行合并到結(jié)果集合中。不指定該項(xiàng)時(shí),被聯(lián)合查詢結(jié)果集合中的重復(fù)行將只保留一
行。
聯(lián)合查詢時(shí),查詢結(jié)果的列標(biāo)題為第一個(gè)查詢語(yǔ)句的列標(biāo)題。因此,要定義列標(biāo)題必須在第一個(gè)查詢語(yǔ)
句中定義。要對(duì)聯(lián)合查詢結(jié)果排序時(shí),也必須使用第一查詢語(yǔ)句中的列名、列標(biāo)題或者列序號(hào)。
在使用UNION 運(yùn)算符時(shí),應(yīng)保證每個(gè)聯(lián)合查詢語(yǔ)句的選擇列表中有相同數(shù)量的表達(dá)式,并且每個(gè)查詢選
擇表達(dá)式應(yīng)具有相同的數(shù)據(jù)類型,或是可以自動(dòng)將它們轉(zhuǎn)換為相同的數(shù)據(jù)類型。在自動(dòng)轉(zhuǎn)換時(shí),對(duì)于數(shù)值類
型,系統(tǒng)將低精度的數(shù)據(jù)類型轉(zhuǎn)換為高精度的數(shù)據(jù)類型。
在包括多個(gè)查詢的UNION語(yǔ)句中,其執(zhí)行順序是自左至右,使用括號(hào)可以改變這一執(zhí)行順序。例如:
查詢1 UNION (查詢2 UNION 查詢3)
INSERT語(yǔ)句
用戶可以用INSERT語(yǔ)句將一行記錄插入到指定的一個(gè)表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語(yǔ)句:
INSERT INTO EMPLOYEES valueS
('Smith','John','1980-06-10',
'Los Angles',16,45000);
通過(guò)這樣的INSERT語(yǔ)句,系統(tǒng)將試著將這些值填入到相應(yīng)的列中。這些列按照我們創(chuàng)建表時(shí)定義的順序排列。在本例中,第一個(gè)值“Smith”將填到第一個(gè)列LAST_NAME中;第二個(gè)值“John”將填到第二列FIRST_NAME中……以此類推。
我們說(shuō)過(guò)系統(tǒng)會(huì)“試著”將值填入,除了執(zhí)行規(guī)則之外它還要進(jìn)行類型檢查。如果類型不符(如將一個(gè)字符串填入到類型為數(shù)字的列中),系統(tǒng)將拒絕這一次操作并返回一個(gè)錯(cuò)誤信息。
如果SQL拒絕了你所填入的一列值,語(yǔ)句中其他各列的值也不會(huì)填入。這是因?yàn)镾QL提供對(duì)事務(wù)的支持。一次事務(wù)將數(shù)據(jù)庫(kù)從一種一致性轉(zhuǎn)移到另一種一致性。如果事務(wù)的某一部分失敗,則整個(gè)事務(wù)都會(huì)失敗,系統(tǒng)將會(huì)被恢復(fù)(或稱之為回退)到此事務(wù)之前的狀態(tài)。
回到原來(lái)的INSERT的例子,請(qǐng)注意所有的整形十進(jìn)制數(shù)都不需要用單引號(hào)引起來(lái),而字符串和日期類型的值都要用單引號(hào)來(lái)區(qū)別。為了增加可讀性而在數(shù)字間插入逗號(hào)將會(huì)引起錯(cuò)誤。記住,在SQL中逗號(hào)是元素的分隔符。
同樣要注意輸入文字值時(shí)要使用單引號(hào)。雙引號(hào)用來(lái)封裝限界標(biāo)識(shí)符。
對(duì)于日期類型,我們必須使用SQL標(biāo)準(zhǔn)日期格式(yyyy-mm-dd)
--設(shè)置用戶訪問(wèn)數(shù)據(jù)庫(kù)的形式 Alter database TestAA set SINGLE_USER with rollback immediate --設(shè)置單用戶訪問(wèn)數(shù)據(jù)庫(kù)
Alter database TestAA set RESTRICTED_USER with rollback immediate
RESTRICTED_USER 只允許 db_owner 固定數(shù)據(jù)庫(kù)角色成員以及 dbcreator 和 sysadmin 固定服務(wù)器角色成員連接到數(shù)據(jù)庫(kù),不過(guò)對(duì)連接數(shù)沒(méi)有限制。在 ALTER DATABASE 語(yǔ)句的終止子句所指定的時(shí)間范圍內(nèi),所有數(shù)據(jù)庫(kù)連接都將被斷開。在數(shù)據(jù)庫(kù)轉(zhuǎn)換到 RESTRICTED_USER 狀態(tài)后,不合格用戶所做的連接嘗試將被拒絕。
Alter database TestAA set MULTI_USER with rollback immediate --設(shè)置用戶正常訪問(wèn)
--設(shè)置數(shù)據(jù)庫(kù)恢復(fù)模式
sql 2008 不支持nolog 和 truncate_only 如果要截?cái)嗳罩镜脑?,需要先把?shù)據(jù)庫(kù)搞成簡(jiǎn)單模型,然后在收縮日志,在改成完全模式。備份一次數(shù)據(jù)庫(kù)。
Alter database set recovery {simple/full/bulk_logged}
dbcc shrinkfile('filename',10)
--導(dǎo)出數(shù)據(jù)到文本
--EXEC master..xp_cmdshell 'bcp "Select cdoc_id,csubject from cmsdbquery..tbl_article" queryout c:\DT.txt -c -SXXXXX -Usa -PXXXXX'
--跟蹤腳本需要打開的選項(xiàng)
set statistics io on
set statistics profile on
set statistics time on
--釋放過(guò)程高速緩存將導(dǎo)致重新編譯某些部分
DBCC FREEPROCCACHE
--從緩沖池中刪除所有清除緩沖區(qū)
不用關(guān)閉和重啟服務(wù)器或者服務(wù)
DBCC DROPCLEANBUFFERS
--以報(bào)表形式顯示有關(guān)過(guò)程高速緩存的信息
DBCC PROCCACHE
--顯示指定表上的指定目標(biāo)的當(dāng)前分布統(tǒng)計(jì)信息
DBCC SHOW_STATISTICS ( table , target )
--從遠(yuǎn)程服務(wù)器打開數(shù)據(jù)庫(kù)連接取數(shù)據(jù)
SELECT top 20 *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=xxx.xxx.xx.x,port;User ID=sa;Password=xxxxxxx'
).[product].dbo.tableaa
data source 好像不能有中括號(hào),好多網(wǎng)友的opendatasource不能用就是這個(gè)原因
SELECT *
FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\bbb.xls";User ID=;Password=;Extended properties=Excel 5.0')...[sheet1$]
文本的查詢
文件必須是,號(hào)分割文件
HDR=YES 的時(shí)候,第一行被認(rèn)為是字段名
HDR=NO 的時(shí)候,第一行被認(rèn)為是數(shù)據(jù)
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是目錄
,aaa#txt) --文件名
BULK INSERT xxxx_trs.dbo.xxxx_day
FROM 'F:\BI_DsssDayAddin_cms_IN.csv'
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)
--查看sql版本
SELECT SERVERPROPERTY('productversion'),SERVERPROPERTY('productlevel'),SERVERPROPERTY('edition')
--初始化標(biāo)識(shí)列
DBCC CHECKIDENT (ProductPicture, RESEED, 1)
--數(shù)據(jù)庫(kù)2個(gè)比較常用的函數(shù)
DATABASEPROPERTY 返回?cái)?shù)據(jù)庫(kù)狀態(tài)的值
select DATABASEPROPERTY(dbname, 'issingleuser') 返回?cái)?shù)據(jù)庫(kù)是不是單用戶模式
HAS_DBACCESS ( 'database_name' )
返回信息,說(shuō)明用戶是否可以訪問(wèn)指定的數(shù)據(jù)庫(kù)
--T終端用戶的人
Query user 查詢當(dāng)前登錄用戶
LogOff sessionid 注銷會(huì)話
Tsdiscon sessionid 斷開某個(gè)會(huì)話的連接
命令行下需要先建立一個(gè)ipc$會(huì)話
net use \\10.168.0.21\c$ "XX" /user:administrator
query user /server 10.168.0.21
tsdiscon 2 /server 10.168.0.21
創(chuàng)建與刪除SQL約束或字段約束。 SQL約束控制
1)禁止所有表約束的SQL
select'alter table '+name+' nocheck constraint all'from sysobjects where type='U'
2)刪除所有表數(shù)據(jù)的SQL
select'TRUNCATE TABLE '+name from sysobjects where type='U'
3)恢復(fù)所有表約束的SQL
select'alter table '+name+' check constraint all'from sysobjects where type='U'
4)刪除某字段的約束
declare@namevarchar(100)
--DF為約束名稱前綴
select@name=b.name from syscolumns a,sysobjects b where a.id=object_id('表名') and b.id=a.cdefault and a.name='字段名'and b.name like'DF%'
--刪除約束
altertable 表名 dropconstraint@name
--為字段添加新默認(rèn)值和約束
ALTERTABLE 表名 ADDCONSTRAINT@name DEFAULT (0) FOR[字段名] 對(duì)字段約束進(jìn)行更改
--刪除約束
ALTERTABLE tablename
DropCONSTRAINT 約束名
--修改表中已經(jīng)存在的列的屬性(不包括約束,但可以為主鍵或遞增或唯一)
ALTERTABLE tablename
altercolumn 列名 intnotnull
--添加列的約束
ALTERTABLE tablename
ADDCONSTRAINT DF_tablename_列名 DEFAULT(0) FOR 列名
--添加范圍約束
altertable tablename add check(性別 in ('M','F'))
創(chuàng)建一個(gè)庫(kù)
CREATE DATABASE g2 ON PRIMARY
( NAME = 'g2', FILENAME = 'E:\benet\data1\g1.mdf' , SIZE = 307200KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = 'g2_log', FILENAME = 'E:\benet\data1\g1_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
創(chuàng)建一個(gè)表
CREATE TABLE biao2
(
id int NOT NULL,
xingming char(10) NOT NULL,
xingbie float(53) NOT NULL,
nianling int NOT NULL,
chengji float(53) NULL
)
查詢
select * from biao1
where chengji between 400 and 600
select * from biao1
where nianling like 55
select * from biao1
where nianling between 10 and 100
select * from biao1
where id = 5
insert into biao1
values (6 ,'原遲',1 , 100 , 1542.22)
update biao1
set chengji = chengji + 1000
select * from biao1
delete
from biao1
where id = 1
select * from biao1
select * from biao1 排序
order by no asc
update biao2
set zongji = shuxue + yuwen + huaxue
where xingming = 'a'
insert into biao1
values
(7,'骨血松濤',1 , 700)
select * from biao1
where xingming like '%血%'
select distinct xingbie from biao1
alter table biao1
drop column chengji 刪除一列
alter table biao2
add
liehao int
select * from biao1,biao2
where biao1.id=biao2.id 將表一和表二聯(lián)系起來(lái),建立主索引, 注意小數(shù)點(diǎn)的應(yīng)用
select * from biao1
inner join biao2
on biao1.id=biao2.id 和上面的一樣
查詢時(shí)間
select * from biao2
where riqi between '1993-01-01 00:00:00.000' and '1994-6-29 00:00:00.000'
select xingming from biao2
where bumen ='xiaoshou' and xingbie ='na'
delete
from biao2
where xingming='jinpeng'
select id ,xingming into biao2_backup
from biao2
where xingbie='na' 備份選擇的數(shù)據(jù)
create view shitu as
select xingming ,riqi
from biao2
where xingbie = 'na' 創(chuàng)建一個(gè)自己匹配的視圖
視圖相當(dāng)于是一個(gè)符合你的目的的一個(gè)查詢結(jié)果集.
他不占用空間,方便你以后的查找.
多文件還原代碼
ESTORE DATABASE [benet] FROM DISK = N'G:\bak\wz.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [benet] FROM DISK = N'G:\bak\cy.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
恢復(fù)數(shù)據(jù)庫(kù) benet 來(lái)自文件 DISK = N'G:\bak\cy.bak' with 文件數(shù)1個(gè),
NORECOVERY 指定不發(fā)生回滾。從而使前滾按順序在下一條語(yǔ)句中繼續(xù)進(jìn)行。
在這種情況下,還原順序可還原其他備份,并執(zhí)行前滾。
REPLACE覆蓋
A. 還原完整數(shù)據(jù)庫(kù)
注意:
MyAdvWorks 數(shù)據(jù)庫(kù)僅供舉例說(shuō)明。
以下示例還原完整數(shù)據(jù)庫(kù)備份。
復(fù)制代碼
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
注意:
對(duì)于使用完全恢復(fù)模式或大容量日志恢復(fù)模式的數(shù)據(jù)庫(kù),在大多數(shù)情況下,SQL Server 2005 都要求您在還原數(shù)據(jù)庫(kù)前備份日志尾部。有關(guān)詳細(xì)信息,請(qǐng)參閱尾日志備份。
B. 還原完整數(shù)據(jù)庫(kù)備份和差異備份
以下示例還原完整數(shù)據(jù)庫(kù)備份后還原差異備份。另外,以下示例還說(shuō)明如何還原媒體上的另一個(gè)備份集。差異備份追加到包含完整數(shù)據(jù)庫(kù)備份的備份設(shè)備上。
復(fù)制代碼
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH NORECOVERY
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH FILE = 2
C. 使用 RESTART 語(yǔ)法還原數(shù)據(jù)庫(kù)
以下示例使用 RESTART 選項(xiàng)重新啟動(dòng)因服務(wù)器電源故障而中斷的 RESTORE 操作。
復(fù)制代碼
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1 WITH RESTART
D. 還原數(shù)據(jù)庫(kù)并移動(dòng)文件
以下示例還原完整數(shù)據(jù)庫(kù)和事務(wù)日志,并將已還原的數(shù)據(jù)庫(kù)移動(dòng)到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目錄下。
復(fù)制代碼
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH NORECOVERY,
MOVE 'MyAdvWorks' TO
'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'MyAdvWorksLog1'
TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewAdvWorks.ldf'
RESTORE LOG MyAdvWorks
FROM MyAdvWorksLog1
WITH RECOVERY
E. 使用 BACKUP 和 RESTORE 創(chuàng)建數(shù)據(jù)庫(kù)的副本
以下示例使用 BACKUP 和 RESTORE 語(yǔ)句創(chuàng)建 AdventureWorks 數(shù)據(jù)庫(kù)的副本。MOVE 語(yǔ)句使數(shù)據(jù)和日志文件還原到指定的位置。RESTORE FILELISTONLY 語(yǔ)句用于確定待還原數(shù)據(jù)庫(kù)內(nèi)的文件數(shù)及名稱。該數(shù)據(jù)庫(kù)的新副本稱為 TestDB。有關(guān)詳細(xì)信息,請(qǐng)參閱 RESTORE FILELISTONLY (Transact-SQL)。
復(fù)制代碼
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\AdventureWorks.bak'
RESTORE FILELISTONLY
FROM DISK = 'C:\AdventureWorks.bak'
RESTORE DATABASE TestDB
FROM DISK = 'C:\AdventureWorks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'C:\testdb.mdf',
MOVE 'AdventureWorks_Log' TO 'C:\testdb.ldf'
GO
F. 使用 STOPAT 語(yǔ)法還原到時(shí)間點(diǎn)和使用多個(gè)設(shè)備進(jìn)行還原
以下示例將數(shù)據(jù)庫(kù)還原到它在 2005 年 4 月 15 日中午 12 點(diǎn)時(shí)的狀態(tài),并顯示涉及多個(gè)日志和多個(gè)備份設(shè)備的還原操作。
復(fù)制代碼
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1, MyAdvWorks_2
WITH NORECOVERY, STOPAT = 'Apr 15, 2005 12:00 AM'
RESTORE LOG MyAdvWorks
FROM MyAdvWorksLog1
WITH NORECOVERY, STOPAT = 'Apr 15, 2005 12:00 AM'
RESTORE LOG MyAdvWorks
FROM MyAdvWorksLog2
WITH RECOVERY, STOPAT = 'Apr 15, 2005 12:00 AM'
G. 將事務(wù)日志還原到標(biāo)記
以下示例將事務(wù)日志還原到名為 ListPriceUpdate 的標(biāo)記事務(wù)中的標(biāo)記處。
復(fù)制代碼
USE AdventureWorks
GO
BEGIN TRANSACTION ListPriceUpdate
WITH MARK 'UPDATE Product list prices'
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%'
GO
COMMIT TRANSACTION ListPriceUpdate
GO
-- Time passes. Regular database
-- and log backups are taken.
-- An error occurs.
USE master
GO
RESTORE DATABASE AdventureWorks
FROM AdvWorks1
WITH FILE = 3, NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdvWorks1
WITH FILE = 4,
STOPATMARK = 'ListPriceUpdate'
H. 使用 TAPE 語(yǔ)法還原
以下示例從 TAPE 備份設(shè)備還原完整數(shù)據(jù)庫(kù)備份。
復(fù)制代碼
RESTORE DATABASE MyAdvWorks
FROM TAPE = '\\.\tape0'
I. 使用 FILE 和 FILEGROUP 語(yǔ)法還原
以下示例還原一個(gè)包含兩個(gè)文件、一個(gè)文件組和一個(gè)事務(wù)日志的數(shù)據(jù)庫(kù)。
復(fù)制代碼
RESTORE DATABASE MyAdvWorks
FILE = 'MyAdvWorks_data_1',
FILE = 'MyAdvWorks_data_2',
FILEGROUP = 'new_customers'
FROM MyAdvWorks_1
WITH NORECOVERY
-- Restore the log backup.
RESTORE LOG MyAdvWorks
FROM MyAdvWorksLog1
J. 恢復(fù)到數(shù)據(jù)庫(kù)快照
以下示例將數(shù)據(jù)庫(kù)恢復(fù)到數(shù)據(jù)庫(kù)快照。此示例假定該數(shù)據(jù)庫(kù)當(dāng)前僅存在一個(gè)快照。有關(guān)創(chuàng)建此數(shù)據(jù)庫(kù)快照的示例,請(qǐng)參閱如何創(chuàng)建數(shù)據(jù)庫(kù)快照 (Transact-SQL)。
注意:
恢復(fù)到快照將刪除所有全文目錄。
復(fù)制代碼
USE master
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
下一條:asp統(tǒng)計(jì)字符串中中文字符的個(gè)數(shù)
上一條:asp替換空格正則表達(dá)式