第8章-數(shù)據(jù)庫(kù)的日常管理與數(shù)據(jù)傳輸_第1頁(yè)
第8章-數(shù)據(jù)庫(kù)的日常管理與數(shù)據(jù)傳輸_第2頁(yè)
第8章-數(shù)據(jù)庫(kù)的日常管理與數(shù)據(jù)傳輸_第3頁(yè)
第8章-數(shù)據(jù)庫(kù)的日常管理與數(shù)據(jù)傳輸_第4頁(yè)
第8章-數(shù)據(jù)庫(kù)的日常管理與數(shù)據(jù)傳輸_第5頁(yè)
已閱讀5頁(yè),還剩164頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)原理與應(yīng)用主講:林祥果通訊系電子教研室(09民航運(yùn)輸信息管理)第8章

數(shù)據(jù)庫(kù)的創(chuàng)建和管理學(xué)習(xí)要點(diǎn):SQLServer數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)事務(wù)日志的概念數(shù)據(jù)庫(kù)的創(chuàng)建、刪除、管理主要內(nèi)容8.1數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)8.2創(chuàng)建和管理數(shù)據(jù)庫(kù)8.3備份和還原數(shù)據(jù)庫(kù)8.4數(shù)據(jù)的導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)庫(kù)文件在磁盤(pán)上如何存儲(chǔ)。SQLServer中每個(gè)數(shù)據(jù)庫(kù)由一組操作系統(tǒng)文件組成。數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)、對(duì)象和數(shù)據(jù)庫(kù)操作日志都存儲(chǔ)在這些文件中。8.1數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)8.1.1數(shù)據(jù)庫(kù)文件數(shù)據(jù)庫(kù)文件可以分為三類(lèi):主數(shù)據(jù)庫(kù)文件次數(shù)據(jù)庫(kù)文件事務(wù)日志文件1.主數(shù)據(jù)庫(kù)文件(PrimaryDatabasefile)每個(gè)數(shù)據(jù)庫(kù)有且僅有一個(gè)主數(shù)據(jù)庫(kù)文件,主數(shù)據(jù)庫(kù)文件用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)的啟動(dòng)信息和部分或全部數(shù)據(jù)。一個(gè)數(shù)據(jù)庫(kù)可以有1到多個(gè)數(shù)據(jù)庫(kù)文件,其中只有一個(gè)文件為主數(shù)據(jù)庫(kù)文件。主數(shù)據(jù)庫(kù)文件的文件擴(kuò)展名為mdf。8.1.1數(shù)據(jù)庫(kù)文件2.次數(shù)據(jù)庫(kù)文件(SecondaryDatabaseFile)用于存儲(chǔ)主數(shù)據(jù)庫(kù)文件中未存儲(chǔ)的剩余數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象。一個(gè)數(shù)據(jù)庫(kù)可以沒(méi)有次數(shù)據(jù)庫(kù)文件,也可以有多個(gè)次數(shù)據(jù)庫(kù)文件。次數(shù)據(jù)庫(kù)文件的文件擴(kuò)展名為ndf。3.事務(wù)日志文件(TranscationLogFile)用于存儲(chǔ)數(shù)據(jù)庫(kù)的更新情況等事務(wù)日志信息。當(dāng)數(shù)據(jù)庫(kù)損壞時(shí),可以使用事務(wù)日志文件恢復(fù)數(shù)據(jù)庫(kù)。一個(gè)數(shù)據(jù)庫(kù)可以有1到多個(gè)事務(wù)日志文件。事務(wù)日志文件的擴(kuò)展名為ldf。8.1.1數(shù)據(jù)庫(kù)文件1.邏輯文件名邏輯文件名是在所有Transact-SQL語(yǔ)句中引用文件時(shí)所使用的名稱。邏輯文件名必須遵守SQLServer標(biāo)識(shí)符的命名規(guī)則,且對(duì)數(shù)據(jù)庫(kù)必須是唯一的。2.物理文件名數(shù)據(jù)庫(kù)文件在物理磁盤(pán)上的存儲(chǔ)路徑及文件名稱構(gòu)成數(shù)據(jù)庫(kù)文件的物理名稱,物理文件名必須遵從操作系統(tǒng)文件名的命名規(guī)則。8.1.1數(shù)據(jù)庫(kù)文件例如:邏輯文件名物理文件名My_Dbfile1e:\sql_data\pri_file1.mdfMy_Dbfile2e:\sql_data\pri_file2.ndfMy_Dbfile3e:\sql_data\pri_file3.ndfMy_Logfile1e:\sql_log\log_file1.ldfMy_Logfile2e:\sql_log\log_file2.ldf8.1.2數(shù)據(jù)庫(kù)文件組為了便于分配和管理,SQLServer允許將多個(gè)文件歸納為同一組,并賦予此組一個(gè)名稱,這就是文件組。1.主文件組(PrimaryFileGroup)所有數(shù)據(jù)庫(kù)都至少包含一個(gè)主文件組,主文件組中包含了所有的系統(tǒng)表,當(dāng)建立數(shù)據(jù)庫(kù)時(shí),主文件組包括主數(shù)據(jù)庫(kù)文件和未指定組的其他文件。

2.次文件組(SecondaryFileGroup)數(shù)據(jù)庫(kù)還可以包含用戶定義的文件組,也稱次文件組。8.1.2數(shù)據(jù)庫(kù)文件組3.默認(rèn)文件組每個(gè)數(shù)據(jù)庫(kù)中都有一個(gè)文件組作為默認(rèn)文件組運(yùn)行。當(dāng)SQLServer給創(chuàng)建時(shí)沒(méi)有為其指定文件組的表或索引分配頁(yè)時(shí),將從默認(rèn)文件組中進(jìn)行分配。一次只能有一個(gè)文件組作為默認(rèn)文件組。默認(rèn)文件組可以由用戶來(lái)指定。如果沒(méi)有指定默認(rèn)文件組,則主文件組是默認(rèn)文件組。8.1.2數(shù)據(jù)庫(kù)文件組文件組中的每個(gè)文件通常建立在不同的硬盤(pán)驅(qū)動(dòng)器上,這樣可減輕單個(gè)磁盤(pán)驅(qū)動(dòng)器的存儲(chǔ)負(fù)載,提高數(shù)據(jù)庫(kù)的存儲(chǔ)效率,從而提高系統(tǒng)性能。SQLServer2000在沒(méi)有文件組時(shí)也能有效地工作,因此許多系統(tǒng)不需要指定次文件組。在這種情況下,所有文件都包含在主文件組中。事務(wù)日志文件是獨(dú)立的,不能作為任何文件組的成員。數(shù)據(jù)庫(kù)文件和文件組的關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)文件日志文件主文件組(1個(gè))次文件組(0~多個(gè))邏輯文件名1邏輯文件名2邏輯文件名n物理文件名1物理文件名2物理文件名n……邏輯文件名1邏輯文件名2邏輯文件名n物理文件名1物理文件名2物理文件名n……主數(shù)據(jù)文件8.2創(chuàng)建和管理數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)查看數(shù)據(jù)庫(kù)修改數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)8.2.1創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)的過(guò)程實(shí)際上是確定數(shù)據(jù)庫(kù)的名稱、設(shè)計(jì)數(shù)據(jù)庫(kù)所占用的存儲(chǔ)空間和文件的存放位置。每個(gè)新創(chuàng)建的數(shù)據(jù)庫(kù)都包含以下數(shù)據(jù)庫(kù)對(duì)象:關(guān)系圖、表、視圖、存儲(chǔ)過(guò)程、用戶、角色、規(guī)則、默認(rèn)、用戶定義的數(shù)據(jù)類(lèi)型和用戶定義的函數(shù)。創(chuàng)建數(shù)據(jù)庫(kù)的途徑:兩個(gè)途徑企業(yè)管理器Transact-SQL語(yǔ)句“數(shù)據(jù)庫(kù)屬性”對(duì)話框向?qū)б?

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)菜單:工具→向?qū)А鷦?chuàng)建數(shù)據(jù)庫(kù)向?qū)Аぞ邫?一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)文件初始大小數(shù)據(jù)庫(kù)文件邏輯名稱物理文件名將默認(rèn)為:邏輯文件名.MDF一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)按百分比增長(zhǎng):發(fā)生增長(zhǎng)時(shí)文件大小百分比一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)事務(wù)日志文件初始大小事務(wù)日志文件邏輯名稱物理文件名將默認(rèn)為:邏輯文件名.LDF一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)一.

使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)二.使用“數(shù)據(jù)庫(kù)屬性”對(duì)話框創(chuàng)建數(shù)據(jù)庫(kù)菜單操作:右擊數(shù)據(jù)庫(kù)文件夾或在其下屬任一數(shù)據(jù)庫(kù)圖標(biāo),選擇“新建數(shù)據(jù)庫(kù)”選項(xiàng)。工具欄操作:二.

使用“數(shù)據(jù)庫(kù)屬性”創(chuàng)建數(shù)據(jù)庫(kù)單擊數(shù)據(jù)文件選項(xiàng)卡,設(shè)置其中的選項(xiàng)。在這里可以直接定義新的文件組二.

使用“數(shù)據(jù)庫(kù)屬性”創(chuàng)建數(shù)據(jù)庫(kù)單擊事務(wù)日志選項(xiàng)卡,設(shè)置其中的選項(xiàng)。三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)格式:CREATEDATABASE數(shù)據(jù)庫(kù)名稱[ON[<文件說(shuō)明>[,...n]][,<文件組>[,...n]]][LOGON{<文件說(shuō)明>[,...n]}]參數(shù)說(shuō)明:數(shù)據(jù)庫(kù)名稱:新數(shù)據(jù)庫(kù)的名稱。ON關(guān)鍵字:其后的參數(shù)指定用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)數(shù)據(jù)的磁盤(pán)文件(數(shù)據(jù)文件)。<文件說(shuō)明>:定義主文件組的數(shù)據(jù)文件。<文件組>:定義用戶文件組及其文件。LOGON:指定日志文件。其后的<文件說(shuō)明>用以定義日志文件。如果沒(méi)有指定LOGON,將自動(dòng)創(chuàng)建一個(gè)日志文件,該文件使用系統(tǒng)生成的名稱,大小為數(shù)據(jù)庫(kù)中所有數(shù)據(jù)文件總大小的25%。三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)<文件說(shuō)明>和<文件組>進(jìn)一步定義如下:<文件說(shuō)明>::= [PRIMARY] ([NAME=邏輯文件名,] FILENAME='物理文件名' [,SIZE=初始大小] [,MAXSIZE={最大限制|UNLIMITED}] [,FILEGROWTH=增長(zhǎng)量])[,...n] <文件組>::= FILEGROUP文件組名稱<文件說(shuō)明>[,...n]三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEdatabase_name[ON[PRIMARY] [(NAME=logical_file_name,] FILENAME=‘os_file_name' [,SIZE=size] [,MAXSIZE={max_size|UNLIMITED}] [,FILEGROWTH=growth_increment])[,…n] [,<filegroupspec>[,…n]][LOGON{(NAME=logical_file_name,] FILENAME=‘os_file_name' [,SIZE=size] [,MAXSIZE={max_size|UNLIMITED}] [,FILEGROWTH=growth_increment])[,…n]}]【例8-1】設(shè)已經(jīng)在e盤(pán)建立了兩個(gè)文件夾:e:\sql_data和e:\sql_log,分別用來(lái)存放數(shù)據(jù)庫(kù)文件和事務(wù)日志文件,使用CREATEDATABASE語(yǔ)句創(chuàng)建一個(gè)company數(shù)據(jù)庫(kù):三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEcompany--創(chuàng)建數(shù)據(jù)庫(kù)ONPRIMARY--定義在主文件組上的文件( NAME=company_data,--邏輯名稱

FILENAME='e:\sql_data\company.mdf',--物理名稱

SIZE=10,--初始大小為10MB MAXSIZE=unlimited,--最大限制為無(wú)限大

FILEGROWTH=10%--增長(zhǎng)速度為10%)LOGON--定義事務(wù)日志文件( NAME=company_log,--邏輯名稱

FILENAME='e:\sql_log\company.ldf',--物理名稱

SIZE=1,--初始大小為1MB MAXSIZE=5,--最大限制為5MB FILEGROWTH=1--增長(zhǎng)速度為1MB)三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)練習(xí)8-1創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)sample。主文件為sample_dat.mdf,邏輯文件名為sample_dat,大小為5MB,最大值50MB,按10%增長(zhǎng)。CREATEDATABASEsampleONPRIMARY(NAME=sample_dat,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sample_data.mdf',SIZE=5,MAXSIZE=50,FILEGROWTH=10)【例8-2】創(chuàng)建一個(gè)雇員信息數(shù)據(jù)庫(kù),包含兩個(gè)數(shù)據(jù)文件和兩個(gè)事務(wù)日志文件。三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEemployeesONPRIMARY--定義在主文件組上的文件( NAME=employee1,--主數(shù)據(jù)文件邏輯名稱

FILENAME='e:\sql_data\employee1.mdf',--物理名稱

SIZE=10,--主數(shù)據(jù)文件初始大小為10MB MAXSIZE=unlimited,--最大限制為無(wú)限大

FILEGROWTH=10%--增長(zhǎng)速度為10%),( NAME=employee2,--次數(shù)據(jù)文件邏輯名稱

FILENAME='e:\sql_data\employee2.ndf',--物理名稱

SIZE=20,--次數(shù)據(jù)文件初始大小為20MB MAXSIZE=100,--次數(shù)據(jù)文件最大限制為100MB FILEGROWTH=1--次數(shù)據(jù)文件增長(zhǎng)速度為1MB)三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)LOGON--定義事務(wù)日志文件( NAME=employeelog1,--事務(wù)日志文件邏輯名文件

FILENAME='e:\sql_log\employeelog1.ldf',--物理名稱

SIZE=10,--初始大小為50MB MAXSIZE=50,--最大限制為50MB FILEGROWTH=1--增長(zhǎng)速度為1MB),( NAME=employeelog2,--事務(wù)日志邏輯文件名

FILENAME='e:\sql_log\employeelog2.ldf',--物理名稱

SIZE=10,--初始大小為10MB MAXSIZE=50,--最大限制為50MB FILEGROWTH=1--增長(zhǎng)速度為1MB)三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)練習(xí)8-2創(chuàng)建一個(gè)只包含一個(gè)數(shù)據(jù)文件和一個(gè)日志文件的數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)名為Sales,數(shù)據(jù)文件的邏輯名為Sales_data,數(shù)據(jù)文件的操作系統(tǒng)名為sales_data.mdf,初始大小為10MB,最大可增加至500MB,增幅為10%;日志文件的邏輯名為Sales_log,操作系統(tǒng)名為sales_log.ldf,初始大小為5MB,最大值為100MB,日志文件大小以2MB增幅增加。

CREATEDATABASESales

ON

(NAME=Sales_data,

FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sales_data.mdf',

SIZE=10MB,

MAXSIZE=500MB,

FILEGROWTH=10%)LOGON(NAME=Sales_log,

FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sales_log.ldf',

SIZE=5MB,

MAXSIZE=100MB,

FILEGROWTH=2MB)【例8-3】創(chuàng)建test數(shù)據(jù)庫(kù),包含一個(gè)主文件組和兩個(gè)次文件組,每個(gè)文件組包含兩個(gè)文件。三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEtestONPRIMARY--定義在主文件組上的文件( NAME=pri_file1, FILENAME='e:\sql_data\pri_file1.mdf', SIZE=10,MAXSIZE=50,FILEGROWTH=15%),( NAME=pri_file2, FILENAME='e:\sql_data\pri_file2.ndf', SIZE=10,MAXSIZE=50,FILEGROWTH=15%),三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)FILEGROUPGrp1--定義在次文件組Grp1上的文件( NAME=Grp1_file1, FILENAME='e:\sql_data\Grp1_file1.ndf', SIZE=10,MAXSIZE=50,FILEGROWTH=5),( NAME=Grp1_file2, FILENAME='e:\sql_data\Grp1_file2.ndf', SIZE=10,MAXSIZE=50,FILEGROWTH=5),三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)FILEGROUPGrp2--定義在次文件組Grp2上的文件( NAME=Grp2_file1, FILENAME='e:\sql_data\Grp2_file1.ndf', SIZE=10,MAXSIZE=50,FILEGROWTH=5),( NAME=Grp2_file2, FILENAME='e:\sql_data\Grp2_file2.ndf', SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON--定義事務(wù)日志文件( NAME='test_log', FILENAME='e:\sql_log\test_log.ldf', SIZE=5,MAXSIZE=25,FILEGROWTH=5)三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)練習(xí)2-3創(chuàng)建一個(gè)包含多個(gè)數(shù)據(jù)文件和日志文件的數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)名為student,含有三個(gè)初始大小為10MB的數(shù)據(jù)文件和兩個(gè)8MB的日志文件。

CREATEDATABASEstudentONPRIMARY(NAME=std_dat1,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\student1.mdf',SIZE=10MB,MAXSIZE=200MB,FILEGROWTH=20),(NAME=std_dat2,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\student2.ndf',SIZE=10MB,MAXSIZE=200MB,FILEGROWTH=20),(NAME=std_dat3,

FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\student3.ndf',

SIZE=10MB,

MAXSIZE=200MB,

FILEGROWTH=20)

LOGON

(NAME=std_log1,

FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\stdlog1.ldf',

SIZE=8MB,

MAXSIZE=100MB,

FILEGROWTH=10MB),

(NAME=std_log2,

FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\stdlog2.ldf',

SIZE=8MB,

MAXSIZE=100MB,

FILEGROWTH=10MB)練習(xí)8-4創(chuàng)建一個(gè)包含兩個(gè)文件組的數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)名為business,主文件組包含business_dat1和business_dat2兩個(gè)數(shù)據(jù)文件。文件組business_group包含文件數(shù)據(jù)文件business_dat3。該數(shù)據(jù)庫(kù)還包含一個(gè)日志文件business_log。

CREATEDATABASEbusinessONPRIMARY(NAME=business_dat1,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\businessdat1.mdf',SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10),(NAME=business_dat2,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\businessdat2.ndf',SIZE=10MB,MAXSIZE=500MB,FILEGROWTH=10),FILEGROUPbusiness_group(NAME=business_dat3,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\businessdat3.ndf',SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%)LOGON(NAME=business_log,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\businesslog.ldf',SIZE=8MB,MAXSIZE=100MB,FILEGROWTH=10MB)創(chuàng)建數(shù)據(jù)庫(kù)需要注意以下幾點(diǎn):每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)所有者,可以在該數(shù)據(jù)庫(kù)中執(zhí)行某些特殊的活動(dòng),數(shù)據(jù)庫(kù)被創(chuàng)建之后,創(chuàng)建數(shù)據(jù)庫(kù)的用戶自動(dòng)成為該數(shù)據(jù)庫(kù)的所有者。默認(rèn)情況下,只有系統(tǒng)管理員和數(shù)據(jù)庫(kù)所有者可以創(chuàng)建數(shù)據(jù)庫(kù),也可以授權(quán)其他用戶創(chuàng)建數(shù)據(jù)庫(kù)。在每個(gè)SQLServer實(shí)例下,最多只能創(chuàng)建32767個(gè)數(shù)據(jù)庫(kù)。所創(chuàng)建的數(shù)據(jù)庫(kù)名稱必須符合標(biāo)識(shí)符的命名規(guī)則。要讓日志文件能夠發(fā)揮作用,通常將數(shù)據(jù)文件和日志文件存儲(chǔ)在不同的物理磁盤(pán)上。三.使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)執(zhí)行CREATEDATABASE語(yǔ)句后,可以在企業(yè)管理器中查看創(chuàng)建數(shù)據(jù)庫(kù)的結(jié)果。方法是:

展開(kāi)數(shù)據(jù)庫(kù)文件夾→右擊的數(shù)據(jù)庫(kù)→選擇“屬性”,打開(kāi)數(shù)據(jù)庫(kù)屬性對(duì)話框,從各選項(xiàng)卡上可以查看所創(chuàng)建數(shù)據(jù)庫(kù)的各種屬性。8.2.2查看數(shù)據(jù)庫(kù)例如,test數(shù)據(jù)庫(kù)的屬性對(duì)話框:8.2.2查看數(shù)據(jù)庫(kù)用T-SQL語(yǔ)句查看數(shù)據(jù)庫(kù)的屬性使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpdb可以查看某個(gè)數(shù)據(jù)庫(kù)或所有數(shù)據(jù)庫(kù)的屬性。格式:sp_helpdb

database_name

該存儲(chǔ)過(guò)程顯示了Sales數(shù)據(jù)庫(kù)的名稱、大小、所有者、創(chuàng)建日期以及數(shù)據(jù)文件和日志文件等屬性。例8-4查看數(shù)據(jù)庫(kù)Sales的屬性。

sp_helpdbSales例8-5查看所有數(shù)據(jù)庫(kù)的屬性

sp_helpdb

8.2.3修改數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)之后,可以在企業(yè)管理器中利用數(shù)據(jù)庫(kù)屬性對(duì)話框直接修改創(chuàng)建時(shí)的某些設(shè)置,或修改創(chuàng)建時(shí)無(wú)法設(shè)置的屬性,也可以使用Transcat-SQL語(yǔ)言的ALTERDATABASE語(yǔ)句修改數(shù)據(jù)庫(kù)。一.使用企業(yè)管理器修改數(shù)據(jù)庫(kù)展開(kāi)數(shù)據(jù)庫(kù)文件夾→右擊數(shù)據(jù)庫(kù)名稱→選擇“屬性”命令,打開(kāi)數(shù)據(jù)庫(kù)屬性對(duì)話框。在該對(duì)話框上有多個(gè)選項(xiàng)卡,可以在各選項(xiàng)卡上查看或修改數(shù)據(jù)庫(kù)文件及其他屬性。一.使用企業(yè)管理器修改數(shù)據(jù)庫(kù)“數(shù)據(jù)庫(kù)屬性”對(duì)話框各選項(xiàng)說(shuō)明如下:限制訪問(wèn):指定只有db_owner、dbcreator

或sysadmin

的成員的用戶才可以訪數(shù)據(jù)庫(kù)。單用戶:指定一次只能有一個(gè)用戶訪問(wèn)數(shù)據(jù)庫(kù)。模型:指定數(shù)據(jù)庫(kù)的恢復(fù)模型類(lèi)型。以確定如何備份數(shù)據(jù)以及能承受何種程度的數(shù)據(jù)丟失ANSINULL默認(rèn)設(shè)置:指定將數(shù)據(jù)表列默認(rèn)定義為NULL還是NOTNULL。當(dāng)選擇此選項(xiàng)時(shí),在CREATETABLE或ALTERTABLE語(yǔ)句過(guò)程中,沒(méi)有顯式定義為NOTNULL的列都將默認(rèn)為允許空值。一.使用企業(yè)管理器修改數(shù)據(jù)庫(kù)遞歸觸發(fā)器:允許觸發(fā)器遞歸調(diào)用。SQLServer設(shè)定的觸發(fā)器遞歸調(diào)用的層數(shù)最多為32層。自動(dòng)更新統(tǒng)計(jì)信息:指定在優(yōu)化期間自動(dòng)生成查詢優(yōu)化所需的過(guò)時(shí)統(tǒng)計(jì)信息。殘缺頁(yè)檢測(cè):允許自動(dòng)檢測(cè)有損壞的頁(yè)。自動(dòng)關(guān)閉:當(dāng)數(shù)據(jù)庫(kù)中無(wú)用戶時(shí),自動(dòng)關(guān)閉該數(shù)據(jù)庫(kù),并將所占用的資源交還給操作系統(tǒng)。自動(dòng)收縮:允許定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行檢查,當(dāng)數(shù)據(jù)庫(kù)文件或日志文件的未用空間超過(guò)其大小的25%時(shí),系統(tǒng)將會(huì)自動(dòng)縮減文件使其未用空間等于25%。一.使用企業(yè)管理器修改數(shù)據(jù)庫(kù)自動(dòng)創(chuàng)建統(tǒng)計(jì)信息:指定在優(yōu)化期間自動(dòng)生成優(yōu)化查詢所需的任何缺少的統(tǒng)計(jì)信息。使用被引用的標(biāo)識(shí)符:指定SQLServer將強(qiáng)制執(zhí)行關(guān)于引號(hào)的ANSI規(guī)則。選擇此選項(xiàng)指定雙引號(hào)只能用于標(biāo)識(shí)符,比如列和表的名稱。字符串必須包含在單引號(hào)內(nèi)。格式:ALTERDATABASE數(shù)據(jù)庫(kù)名稱{ADDFILE<文件說(shuō)明>[,...n][TOFILEGROUP文件組名稱]|ADDLOGFILE<文件說(shuō)明>[,...n]|REMOVEFILE邏輯文件名|ADDFILEGROUP文件組名稱|REMOVEFILEGROUP文件組名稱|MODIFYFILE<文件說(shuō)明>|MODIFYNAME=新數(shù)據(jù)庫(kù)名|MODIFYFILEGROUP文件組名稱{文件組屬性|NAME=新文件組名稱}二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)參數(shù)說(shuō)明:數(shù)據(jù)庫(kù)名稱:是要更改的數(shù)據(jù)庫(kù)的名稱。ADDFILE:指定要添加文件。該文件由后面的<文件說(shuō)明>指定。<文件說(shuō)明>定義如下:

<文件說(shuō)明>::=(NAME=邏輯文件名

[,NEWNAME=新邏輯文件名][,FILENAME='物理文件名'][,SIZE=大小][,MAXSIZE={最大限制|UNLIMITED}][,FILEGROWTH=增長(zhǎng)量])二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)TOFILEGROUP:表示要將指定的文件添加到其后指定的的文件組中。ADDLOGFILE:表示要將其后指定的日志文件添加到指定的數(shù)據(jù)庫(kù)中。REMOVEFILE:從數(shù)據(jù)庫(kù)系統(tǒng)表中刪除文件描述并刪除物理文件。ADDFILEGROUP:指定要添加文件組。REMOVEFILEGROUP:從數(shù)據(jù)庫(kù)中刪除文件組。只有當(dāng)文件組為空時(shí)才能將其刪除。二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)MODIFYFILE:表示要更改指定的文件,可以更改文件名稱、大小、增長(zhǎng)情況和最大限制。一次只能更改一種屬性。如果指定了SIZE,那么新的大小必須比文件當(dāng)前大小還大。MODIFYNAME=新數(shù)據(jù)庫(kù)名:表示要重命名數(shù)據(jù)庫(kù)。MODIFYFILEGROUP文件組名稱{文件組屬性|NAME=新文件組名稱}:指定要修改的文件組和所需的改動(dòng)。如果指定“文件組名稱”和“NAME=新文件組名稱”,則將此文件組的名稱改為新文件組名稱。如果指定“文件組名稱”和“文件組屬性”,則表示修改文件組的屬性。二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)“文件組屬性”的值有:READONLY——指定文件組為只讀。不允許更新其中的對(duì)象。主文件組不能設(shè)置為只讀。READWRITE——指定文件組為讀寫(xiě)屬性。允許更新文件組中的對(duì)象。只有具有排它數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限的用戶才能將文件組標(biāo)記為讀/寫(xiě)。DEFAULT——將文件組指定為默認(rèn)數(shù)據(jù)庫(kù)文件組。只能有一個(gè)數(shù)據(jù)庫(kù)文件組是默認(rèn)的。二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)【例8-6】添加一個(gè)事務(wù)日志文件到employees數(shù)據(jù)庫(kù)中。ALTERDATABASEemployeesADDLOGFILE--添加日志文件(NAME=employeelog3,FILENAME='e:\sql_log\employeelog3.ldf',SIZE=1,MAXSIZE=50,FILEGROWTH=1)二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)【例8-7】添加一個(gè)包含兩個(gè)數(shù)據(jù)文件的文件組到employees數(shù)據(jù)庫(kù)中。二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)

ALTERDATABASEemployees ADDFILEGROUPdata1--添加文件組data1ALTERDATABASEemployeesADDFILE--添加數(shù)據(jù)文件

(NAME=employee3,FILENAME='e:\sql_data\employee3.ndf',SIZE=1,MAXSIZE=50,FILEGROWTH=1),

(NAME=employee4,FILENAME='e:\sql_data\employee4.ndf',SIZE=2,MAXSIZE=50,FILEGROWTH=10%)TOFILEGROUPdata1--將以上兩個(gè)文件添加到data1文件組MODIFYFILEGROUPfilegroup_name{filegroup_property

|NAME=new_filegroup_name}:修改某一文件組的屬性。練習(xí)8-7為數(shù)據(jù)庫(kù)sample添加一個(gè)數(shù)據(jù)文件sample_dat2和一個(gè)日志文件sample_log2。ALTERDATABASEsampleADDFILE(NAME=sample_dat2,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sample_dat2.ndf',SIZE=4,MAXSIZE=10,FILEGROWTH=1)ALTERDATABASEsampleADDLOGFILE(NAME=sample_log2,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sample_log2.ldf',SIZE=4,MAXSIZE=10,FILEGROWTH=1)練習(xí)8-8為數(shù)據(jù)庫(kù)sample添加一個(gè)文件組USER1,并向該文件組添加一個(gè)二個(gè)數(shù)據(jù)文件sampuser_dat1和sampuser_dat2。

ALTERDATABASEsampleADDFILEGROUPUSER1

ALTERDATABASEsampleADDFILE(NAME=sampuser_dat1,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sampuser_dat1.ndf',SIZE=4,MAXSIZE=10,FILEGROWTH=1),(NAME=sampuser_dat2,FILENAME='d:\programfiles\microsoft

sqlserver\mssql\data\sampuser_dat2.ndf',SIZE=4,MAXSIZE=10,FILEGROWTH=1)TOFILEGROUPUSER1【例8-8】刪除例8-4中添加到數(shù)據(jù)庫(kù)employees中的一個(gè)數(shù)據(jù)文件employee4。

ALTERDATABASEemployees REMOVEFILEemployee4二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)練習(xí)8-9從數(shù)據(jù)庫(kù)sample中刪除文件sampuser_dat2。ALTERDATABASEsampleREMOVEFILEsampuser_dat2練習(xí)8-10刪除數(shù)據(jù)庫(kù)sample中的文件組USER1。ALTERDATABASEsampleREMOVEFILEsampuser_dat1ALTERDATABASEsampleREMOVEFILEGROUPUSER1注意:在刪除文件組時(shí)必須先刪除文件組中所包含的文件。

【例8-9】給添加到數(shù)據(jù)庫(kù)employees中的文件。employee3增加大小。

ALTERDATABASEemployees MODIFYFILE (NAME=employee3, SIZE=5MB)二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)練習(xí)8-11修改數(shù)據(jù)庫(kù)sample中數(shù)據(jù)文件sample_dat2的屬性,將其初始大小改為10MB,最大容量改為80MB,增長(zhǎng)幅度改為5MB。ALTERDATABASEsampleMODIFFILE(NAME=sample_dat2,SIZE=10,MAXSIZE=80,FILEGROWTH=5)【例8-10】將數(shù)據(jù)庫(kù)文件名employees修改成MyEmployeesALTERDATABASEemployeesMODIFYNAME=MyEmployees二.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)練習(xí)8-12修改數(shù)據(jù)庫(kù)business中文件組business_group的屬性,將其改名為group1,并設(shè)置為DEFAULT屬性(即該文件組為默認(rèn)文件組)。ALTERDATABASEbusinessMODIFYFILEGROUPbusiness_groupNAME=group1ALTERDATABASEbusinessMODIFYFILEGROUPgroup1DEFAULT練習(xí)8-13將數(shù)據(jù)庫(kù)student改名為stud_teacher。ALTERDATABASEstudentMODIFYNAME=stud_teacher

重命名數(shù)據(jù)庫(kù)語(yǔ)法形式為:sp_renamedb‘old_name’,’new_name’old_name:數(shù)據(jù)庫(kù)的當(dāng)前名稱;new_name是數(shù)據(jù)庫(kù)的新名稱。練習(xí)8-14將數(shù)據(jù)庫(kù)business更名為company。

sp_renamedb'business','company

8.2.4刪除數(shù)據(jù)庫(kù)對(duì)于不再使用的數(shù)據(jù)庫(kù),可以刪除它們以釋放所占用的磁盤(pán)空間。可以在企業(yè)管理器中刪除數(shù)據(jù)庫(kù),也可以使用DROPDATABASE語(yǔ)句刪除數(shù)據(jù)庫(kù)。一.使用企業(yè)管理器刪除數(shù)據(jù)庫(kù)快捷菜單操作:右擊所要數(shù)據(jù)庫(kù)名稱→選擇“刪除”命令工具欄操作:?jiǎn)螕魯?shù)據(jù)庫(kù)名稱→使用按鈕彈出對(duì)話框如下圖。二.使用T-SQL語(yǔ)句刪除數(shù)據(jù)庫(kù)格式:

DROPDATABASE數(shù)據(jù)庫(kù)名稱[,…n]【例8-11】刪除創(chuàng)建的數(shù)據(jù)庫(kù)company。

DROPDATABASEcompany顯示結(jié)果為:

正在刪除數(shù)據(jù)庫(kù)文件'e:\sql_log\company.ldf'。正在刪除數(shù)據(jù)庫(kù)文件'e:\sql_data\company.mdf'。注意:如果數(shù)據(jù)庫(kù)當(dāng)前正在使用,則無(wú)法刪除該數(shù)據(jù)庫(kù)。8.3備份數(shù)據(jù)庫(kù)在數(shù)據(jù)庫(kù)的使用過(guò)程中,難免會(huì)由于病毒、人為失誤、機(jī)器故障等原因造成數(shù)據(jù)的丟失或損壞。數(shù)據(jù)對(duì)于一個(gè)企業(yè)、政府部門(mén)來(lái)說(shuō)往往是非常重要的,一旦出現(xiàn)問(wèn)題,造成的損失是巨大的。為了保證數(shù)據(jù)庫(kù)的安全性,防止數(shù)據(jù)庫(kù)中數(shù)據(jù)的意外丟失,應(yīng)經(jīng)常對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行備份,以便在數(shù)據(jù)庫(kù)出故障的時(shí)候進(jìn)行及時(shí)有效的恢復(fù)。4.3.1備份概述備份內(nèi)容系統(tǒng)數(shù)據(jù)庫(kù)用戶數(shù)據(jù)庫(kù)事務(wù)日志備份方式(備份類(lèi)型)完全數(shù)據(jù)庫(kù)備份差異數(shù)據(jù)庫(kù)備份事務(wù)日志備份數(shù)據(jù)庫(kù)文件和文件組備份8.3.1備份概述1.完全數(shù)據(jù)庫(kù)備份

備份數(shù)據(jù)庫(kù)的所有表的數(shù)據(jù)及模式,以及對(duì)應(yīng)的文件結(jié)構(gòu),包括對(duì)事務(wù)日志中的事務(wù)進(jìn)行備份。2.差異數(shù)據(jù)庫(kù)備份

只記錄自上次完全數(shù)據(jù)庫(kù)備份后發(fā)生更改的數(shù)據(jù)。差異備份的數(shù)據(jù)量比完全備份小而且備份速度快,因此可以更經(jīng)常地備份,經(jīng)常備份將減少丟失數(shù)據(jù)的危險(xiǎn)。8.3.1備份概述3.事務(wù)日志備份

事務(wù)日志是自上次備份事務(wù)日志后對(duì)數(shù)據(jù)庫(kù)執(zhí)行的所有事務(wù)的一系列記錄。事務(wù)日志備份只考慮在日志中所記錄的變化,是基于邏輯操作的備份??梢允褂檬聞?wù)日志備份將數(shù)據(jù)庫(kù)恢復(fù)到特定的即時(shí)點(diǎn)或恢復(fù)到故障點(diǎn)。4.數(shù)據(jù)庫(kù)文件和文件組備份

只備份特定的文件或文件組,常用于超大型數(shù)據(jù)庫(kù)的備份。8.3.2創(chuàng)建和刪除備份設(shè)備磁盤(pán)備份設(shè)備:指硬盤(pán)或其它磁盤(pán)存儲(chǔ)介質(zhì)上的文件,與常規(guī)操作系統(tǒng)文件一樣??梢栽诒镜胤?wù)器的磁盤(pán)上或遠(yuǎn)程共享磁盤(pán)上定義磁盤(pán)備份設(shè)備。磁帶備份設(shè)備:磁帶設(shè)備只能物理連接到運(yùn)行SQLServer實(shí)例的計(jì)算機(jī)上。SQLServer不支持備份到遠(yuǎn)程磁帶設(shè)備上。在進(jìn)行備份以前一般要指定或創(chuàng)建備份設(shè)備,備份設(shè)備是用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)、事務(wù)日志或文件和文件組備份的存儲(chǔ)介質(zhì)。包括磁盤(pán)和磁帶設(shè)備。8.3.2創(chuàng)建和刪除備份設(shè)備物理設(shè)備名稱:是操作系統(tǒng)用來(lái)標(biāo)識(shí)備份設(shè)備的名稱,如“D:\MyBackups\Student.bak”。邏輯設(shè)備名稱:是用來(lái)標(biāo)識(shí)物理備份設(shè)備的別名或公用名稱,用以簡(jiǎn)化物理設(shè)備名稱。例如,邏輯設(shè)備名稱可以是“STDBackup”,而物理設(shè)備名稱則是“D:\MyBackups\Student.bak”。

SQLServer使用物理設(shè)備名稱或邏輯設(shè)備名稱來(lái)標(biāo)識(shí)備份設(shè)備。8.3.2創(chuàng)建和刪除備份設(shè)備1.使用企業(yè)管理器創(chuàng)建設(shè)備

選擇服務(wù)器→展開(kāi)“管理”文件夾→右擊“備份”→選擇“新建備份設(shè)備”命令8.3.2創(chuàng)建和刪除備份設(shè)備打開(kāi)“備份設(shè)備屬性”對(duì)話框:邏輯備份設(shè)備名稱物理備份設(shè)備名稱8.3.2創(chuàng)建和刪除備份設(shè)備2.使用企業(yè)管理器刪除備份設(shè)備

創(chuàng)建備份設(shè)備后,在企業(yè)管理器的右側(cè)窗格中會(huì)顯示該備份設(shè)備的名稱、物理位置和設(shè)備類(lèi)型,用鼠標(biāo)右擊要?jiǎng)h除的備份設(shè)備的名稱,從彈出的快捷菜單中選擇“刪除”命令,則可以刪除相應(yīng)的備份設(shè)備。8.3.2創(chuàng)建和刪除備份設(shè)備3.使用系統(tǒng)存儲(chǔ)過(guò)程創(chuàng)建備份設(shè)備格式:sp_addumpdevice[@devtype=]'設(shè)備類(lèi)型',[@logicalname=]'邏輯備份設(shè)備名',[@physicalname=]'物理備份設(shè)備名'參數(shù)說(shuō)明:[@devtype=]‘設(shè)備類(lèi)型’:指定備份設(shè)備的類(lèi)型,可以是:disk、pipe、tape。[@logicalname=]'邏輯備份設(shè)備名':指定邏輯備份設(shè)備名稱。8.3.2創(chuàng)建和刪除備份設(shè)備[@physicalname=]'物理備份設(shè)備名':指定物理備份設(shè)備名。物理名稱必須遵照操作系統(tǒng)文件名稱的規(guī)則或者網(wǎng)絡(luò)設(shè)備的通用命名規(guī)則,并且必須包括完整的路徑。對(duì)于遠(yuǎn)程硬盤(pán)文件,可以使用格式“\\主機(jī)名\共享路徑名\路徑名\文件名\”表示;對(duì)于磁帶設(shè)備,用“\\.\TAPEn”表示,其中n為磁帶驅(qū)動(dòng)器序列號(hào)。8.3.2創(chuàng)建和刪除備份設(shè)備【例8-9】創(chuàng)建磁盤(pán)一個(gè)備份設(shè)備,邏輯名稱為“copy1”,物理名稱為“d:\Mybackup\company.bak”

EXECsp_addumpdevice

@devtype='disk',@logicalname='copy1',

@physicalname='d:\Mybackup\company.bak'也可以簡(jiǎn)化成:

EXECsp_addumpdevice

'disk','copy1','d:\Mybackup\company.bak'這里的EXEC表示執(zhí)行存儲(chǔ)過(guò)程。8.3.2創(chuàng)建和刪除備份設(shè)備【例8-12】創(chuàng)建備份設(shè)備copy2,使用teacher服務(wù)器共享文件夾backup下的文件company1.bak。

EXECsp_addumpdevice

'disk','copy2','\\teacher\backup\company1.bak'【例8-13】用物理設(shè)備\\.\TAPE0創(chuàng)建一個(gè)磁帶備份設(shè)備tapedevice。

EXECsp_addumpdevice

'tape','tapedevice','\\.\TAPE0'8.3.2創(chuàng)建和刪除備份設(shè)備4.使用系統(tǒng)存儲(chǔ)過(guò)程sp_dropdevice刪除備份設(shè)備格式:

sp_dropdevice

[@logicalname=]'邏輯備份設(shè)備名'[,[@delfile=]'刪除文件']參數(shù)說(shuō)明:

@delfile:指是否同時(shí)刪除物理備份文件。如果該參數(shù)指定為DELFILE,那么就會(huì)刪除設(shè)備物理文件名指定的磁盤(pán)文件。8.3.2創(chuàng)建和刪除備份設(shè)備【例8-14】刪除例8-11創(chuàng)建的備份設(shè)備tapedevice,不刪除相應(yīng)的物理備份文件。

EXECsp_dropdevice'tapedevice'【例8-15】刪除例8-9創(chuàng)建的備份設(shè)備copy1,并刪除相應(yīng)的物理文件。

EXECsp_dropdevice'copy1','DELFILE'8.3.3執(zhí)行備份(1)打開(kāi)備份數(shù)據(jù)庫(kù)話框方法一:右擊數(shù)據(jù)庫(kù)→選擇“所有任務(wù)”→選擇“備份數(shù)據(jù)庫(kù)”令方法二:展開(kāi)“數(shù)據(jù)庫(kù)”文件夾→展開(kāi)“管理”文件夾→右擊“備份”→選擇“備份數(shù)據(jù)庫(kù)”方法三:打開(kāi)“工具”菜單→選擇“備份數(shù)據(jù)庫(kù)”1.在企業(yè)管理器中使用備份數(shù)據(jù)庫(kù)對(duì)話框執(zhí)行備份8.3.3執(zhí)行備份8.3.3執(zhí)行備份8.3.3執(zhí)行備份2.在企業(yè)管理器中使用備份向?qū)?zhí)行備份(1)單擊服務(wù)器

打開(kāi)“工具”菜單→選擇“向?qū)А被騿螕?/p>

工具欄圖標(biāo)

打開(kāi)“選擇向?qū)А睂?duì)話框:8.3.3執(zhí)行備份(2)選擇數(shù)據(jù)庫(kù):8.3.3執(zhí)行備份(3)輸入備份名稱和描述信息:8.3.3執(zhí)行備份(4)選擇備份類(lèi)型:8.3.3執(zhí)行備份(5)選擇備份設(shè)備和屬性:8.3.3執(zhí)行備份(6)備份驗(yàn)證和調(diào)度:8.3.3執(zhí)行備份(7)完成備份:8.3.3執(zhí)行備份(1)完全數(shù)據(jù)庫(kù)備份格式:

BACKUPDATABASE數(shù)據(jù)庫(kù)名稱

TO<備份設(shè)備>[,...n][WITH[NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]3.使用BACKUPDATABASE語(yǔ)句備份數(shù)據(jù)庫(kù)8.3.3執(zhí)行備份說(shuō)明:<備份設(shè)備>:指定備份要使用的邏輯或物理備份設(shè)備。定義如下:

<備份設(shè)備>::={邏輯備份設(shè)備名}|{DISK|=TAPE}'物理備份設(shè)備名'INIT:指定應(yīng)重寫(xiě)所有備份集。NOINIT:表示備份集將追加到指定的設(shè)備現(xiàn)有數(shù)據(jù)之后,以保留現(xiàn)有的備份集。完全數(shù)據(jù)庫(kù)備份是制作數(shù)據(jù)庫(kù)中所有內(nèi)容的一個(gè)副本,備份過(guò)程花費(fèi)時(shí)間相對(duì)較長(zhǎng),備份占用的空間大,因此不宜頻繁進(jìn)行。8.3.3執(zhí)行備份【例8-16】將“學(xué)生管理”數(shù)據(jù)庫(kù)備份到d盤(pán)的mybackup文件夾下的“學(xué)生管理.bak”文件中。

--首先先創(chuàng)建一個(gè)備份設(shè)備

sp_addumpdevice'disk','mycopy1','d:\mybackup\學(xué)生管理.bak'--用BACKUPDATABASE備份學(xué)生管理數(shù)據(jù)庫(kù)

BACKUPDATABASE學(xué)生管理

TOmycopy1WITHNAME='學(xué)生管理備份',DESCRIPTION='完全備份'8.3.3執(zhí)行備份【例8-15】將“學(xué)生管理”數(shù)據(jù)庫(kù)備份到網(wǎng)絡(luò)中的另一臺(tái)主機(jī)ServerX上。

sp_addumpdevice

'disk','STDcopy','\\ServerX\backup\student.dat'BACKUPDATABASE學(xué)生管理TOSTDcopy8.3.3執(zhí)行備份(2)差異數(shù)據(jù)庫(kù)備份指對(duì)最近一次完全數(shù)據(jù)庫(kù)備份結(jié)束以來(lái)發(fā)生改變的數(shù)據(jù)進(jìn)行備份。當(dāng)數(shù)據(jù)庫(kù)從上次備份以來(lái)只修改了很少的數(shù)據(jù)時(shí),適合使用差異備份。格式:

BACKUPDATABASE數(shù)據(jù)庫(kù)名稱

TO<備份設(shè)備>[,...n]WITH

DIFFERENTIAL[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]8.3.3執(zhí)行備份【例8-16】假設(shè)對(duì)“學(xué)生管理”數(shù)據(jù)庫(kù)進(jìn)行了一些修改,現(xiàn)在要做一個(gè)差異備份,且將該備份添加到例8-14的現(xiàn)有備份之后。

BACKUPDATABASE學(xué)生管理

TOmycopy1WITHDIFFERENTIAL,NOINIT,NAME='學(xué)生管理備份',DESCRIPTION='第一次差異備份'8.3.3執(zhí)行備份(3)文件或文件組備份當(dāng)一個(gè)數(shù)據(jù)庫(kù)很大時(shí),對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份可能會(huì)花費(fèi)很多時(shí)間,這時(shí)可以采用文件或文件組備份,即對(duì)數(shù)據(jù)庫(kù)中的部分文件或文件組進(jìn)行備份。8.3.3執(zhí)行備份格式:

BACKUPDATABASE數(shù)據(jù)庫(kù)名稱

<文件或文件組>[,...n]TO<備份設(shè)備>[,...n][WITHDIFFERENTIAL[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]<文件或文件組>::={FILE=邏輯文件名|FILEGROUP=邏輯文件組名}8.3.3執(zhí)行備份【例8-17】將test數(shù)據(jù)庫(kù)的grp1_file1文件備份到文件“E:\temp\grp1_file1.dat”中。

BACKUPDATABASEtestFILE='grp1_file1'TODISK='E:\temp\grp1_file1.dat'【例8-18】將test數(shù)據(jù)庫(kù)的文件組grp1備份到文件“E:\temp\group1.dat”中。

BACKUPDATABASEtestFILEGROUP='grp1'TODISK='E:\temp\group1.dat'WITHNAME='groupbackupoftest'8.3.3執(zhí)行備份(4)事務(wù)日志備份事務(wù)日志是自上次備份事務(wù)日志后對(duì)數(shù)據(jù)庫(kù)執(zhí)行的所有事務(wù)的一系列記錄,備份事務(wù)日志將對(duì)最近一次備份事務(wù)日志以來(lái)的所有事務(wù)日志進(jìn)行備份。格式:

BACKUPLOG數(shù)據(jù)庫(kù)名稱

TO<備份設(shè)備>[,...n][WITH[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]8.3.3執(zhí)行備份【例8-19】將“學(xué)生管理”數(shù)據(jù)庫(kù)的日志文件備份到文件“e:\temp\MyLog1.bak”中。

EXECsp_addumpdevice'disk','MyLog1','e:\temp\MyLog1.bak'BACKUPLOG學(xué)生管理TOMyLog18.3.4還原數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)備份后,一旦系統(tǒng)發(fā)生崩潰或者執(zhí)行了錯(cuò)誤的數(shù)據(jù)庫(kù)操作,就可以從備份文件中恢復(fù)(還原)數(shù)據(jù)庫(kù),讓數(shù)據(jù)庫(kù)回到備份時(shí)的狀態(tài)。通常在以下情況下需要恢復(fù)數(shù)據(jù)庫(kù)。媒體故障。用戶操作錯(cuò)誤。服務(wù)器永久丟失。將數(shù)據(jù)庫(kù)從一臺(tái)服務(wù)器復(fù)制到另一臺(tái)服務(wù)器?;謴?fù)數(shù)據(jù)庫(kù)之前,需要限制其他用戶訪問(wèn)數(shù)據(jù)庫(kù):右擊數(shù)據(jù)庫(kù)→選擇“屬性”→選擇“選項(xiàng)”→選擇“限制訪問(wèn)”、單用戶8.3.4還原數(shù)據(jù)庫(kù)恢復(fù)內(nèi)容:恢復(fù)整個(gè)數(shù)據(jù)庫(kù)恢復(fù)部分?jǐn)?shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)庫(kù)文件或文件組恢復(fù)數(shù)據(jù)庫(kù)事務(wù)日志恢復(fù)途徑:使用企業(yè)管理器中使用RESTOREDATABASE8.3.4還原數(shù)據(jù)庫(kù)1.使用企業(yè)管理器恢復(fù)數(shù)據(jù)庫(kù)單擊服務(wù)器名稱→選擇“工具”菜單→選擇“還原數(shù)據(jù)庫(kù)”或右擊“數(shù)據(jù)庫(kù)”或數(shù)據(jù)庫(kù)名稱→選擇“所有任務(wù)”→選擇“還原數(shù)據(jù)庫(kù)”命令。兩種方法都會(huì)打開(kāi)“還原數(shù)據(jù)庫(kù)”對(duì)話框:8.3.4還原數(shù)據(jù)庫(kù)“還原數(shù)據(jù)庫(kù)”對(duì)話框——“常規(guī)”選項(xiàng)卡8.3.4還原數(shù)據(jù)庫(kù)“還原數(shù)據(jù)庫(kù)”對(duì)話框——“選項(xiàng)”選項(xiàng)卡8.3.4還原數(shù)據(jù)庫(kù)2.使用RESTOREDATABASE語(yǔ)句恢復(fù)數(shù)據(jù)庫(kù)(1)恢復(fù)完全備份數(shù)據(jù)庫(kù)和差異備份數(shù)據(jù)庫(kù)格式:

RESTOREDATABASE數(shù)據(jù)庫(kù)名稱

[FROM<備份設(shè)備>[,...n]][WITH[[,]FILE=文件號(hào)]

[[,]MOVE'邏輯文件名'TO'物理文件名'][,...n][[,]{NORECOVERY|RECOVERY}][[,]REPLACE]]8.3.4還原數(shù)據(jù)庫(kù)說(shuō)明:文件號(hào):要還原的備份集。例如,文件號(hào)為2表示第二個(gè)備份集。NORECOVERY:指示還原操作不回滾任何未提交的事務(wù)。當(dāng)還原數(shù)據(jù)庫(kù)備份和多個(gè)事務(wù)日志時(shí),或在需要使用多個(gè)RESTORE語(yǔ)句時(shí)(例如在完整數(shù)據(jù)庫(kù)備份后進(jìn)行差異數(shù)據(jù)庫(kù)備份),SQLServer要求在除最后的RESTORE語(yǔ)句外的所有其它語(yǔ)句上使用WITHNORECOVERY選項(xiàng)。RECOVERY:指示還原操作回滾任何未提交的事務(wù)。在恢復(fù)完成后即可隨時(shí)使用數(shù)據(jù)庫(kù)。REPLACE:指定如果存在同名數(shù)據(jù)庫(kù),將覆蓋現(xiàn)有的數(shù)據(jù)庫(kù)。8.3.4還原數(shù)據(jù)庫(kù)【例8-20】設(shè)在E盤(pán)temp文件夾下有一個(gè)職工數(shù)據(jù)庫(kù)的完全備份文件“職工.bak”,恢復(fù)該數(shù)據(jù)庫(kù),將恢復(fù)后的數(shù)據(jù)庫(kù)名稱改為“職工信息”。如果當(dāng)前服務(wù)器中存在“職工信息”數(shù)據(jù)庫(kù),則覆蓋該數(shù)據(jù)庫(kù)。方法一:使用備份設(shè)備。EXECsp_addumpdevice'disk','copy1','E:\temp\職工.bak'RESTOREDATABASE職工信息FROMcopy1WITHMOVE'職工_data'TO'e:\sql_data\職工信息.mdf',MOVE'職工_log'TO'e:\sql_log\職工信息.lgf',REPLACE8.3.4還原數(shù)據(jù)庫(kù)方法二:直接指定磁盤(pán)文件名

RESTOREDATABASE職工信息

FROMDISK='E:\temp\職工.bak'WITHMOVE'職工_data'TO'e:\sql_data\職工信息.mdf',MOVE'職工_log'TO'e:\sql_log\職工信息.lgf',REPLACE8.3.4還原數(shù)據(jù)庫(kù)【例8-21】設(shè)第一天做了一個(gè)“學(xué)生管理”數(shù)據(jù)庫(kù)的完全備份,第2天做了一個(gè)“學(xué)生管理”數(shù)據(jù)庫(kù)的差異備份,之后數(shù)據(jù)庫(kù)出現(xiàn)故障,將數(shù)據(jù)庫(kù)恢復(fù)到做差異備份時(shí)的狀態(tài)。8.3.4還原數(shù)據(jù)庫(kù)

--恢復(fù)完全備份

RESTOREDATABASE學(xué)生管理

FROMmycopy1WITHFILE=1,NORECOVERY --這時(shí)數(shù)據(jù)庫(kù)無(wú)法使用,繼續(xù)恢復(fù)差異備份

RESTOREDATABASE學(xué)生管理

FROMmycopy1WITHFILE=2,RECOVERY

--這時(shí)數(shù)據(jù)庫(kù)可以使用8.3.4還原數(shù)據(jù)庫(kù)(2)恢復(fù)事務(wù)日志格式:

RESTORELOG數(shù)據(jù)庫(kù)名稱

[FROM<備份設(shè)備>[,...n]][WITH[[,]FILE=文件號(hào)]

[[,]MOVE'邏輯文件名'TO'物理文件名'][,...n][[,]{NORECOVERY|RECOVERY}]]8.3.4還原數(shù)據(jù)庫(kù)【例8-22】假設(shè)對(duì)“學(xué)生管理”數(shù)據(jù)庫(kù)先后做了完全數(shù)據(jù)庫(kù)備份、差異數(shù)據(jù)庫(kù)備份和事務(wù)日志備份現(xiàn)在利用這三個(gè)備份來(lái)恢復(fù)數(shù)據(jù)庫(kù)。

--恢復(fù)完全備份

RESTOREDATABASE學(xué)生管理

FROMmycopy1WITHFILE=1,NORECOVERY8.3.4還原數(shù)據(jù)庫(kù)--這時(shí)數(shù)據(jù)庫(kù)無(wú)法使用,繼續(xù)恢復(fù)差異備份RESTOREDATABASE學(xué)生管理FROMmycopy1WITHFILE=2,NORECOVERY--這時(shí)數(shù)據(jù)庫(kù)仍然無(wú)法使用,繼續(xù)恢復(fù)事務(wù)日志備份RESTORELOG學(xué)生管理FROMMylog1WITHRECOVERY

--完成恢復(fù),數(shù)據(jù)庫(kù)可以使用利用數(shù)據(jù)庫(kù)的維護(hù)計(jì)劃向?qū)Э梢苑奖愕卦O(shè)置數(shù)據(jù)庫(kù)的核心維護(hù)任務(wù),以便于定期地執(zhí)行這些任務(wù)8.4維護(hù)數(shù)據(jù)庫(kù)8.5數(shù)據(jù)的導(dǎo)入導(dǎo)出導(dǎo)入導(dǎo)出數(shù)據(jù)方法概述DTS概述DTS導(dǎo)出向?qū)TS導(dǎo)入向?qū)г谑褂肧QLServer的過(guò)程中,經(jīng)常需要將其他應(yīng)用程序(例如Access數(shù)據(jù)庫(kù)或ASCII文本文件)的數(shù)據(jù)移植到SQLServer2000數(shù)據(jù)庫(kù)中,或者將SQLServer2000的數(shù)據(jù)移植到其他數(shù)據(jù)庫(kù)中。這種在SQLServer2000和其他應(yīng)用程序之間的數(shù)據(jù)轉(zhuǎn)換,就是本章中將要介紹的導(dǎo)入導(dǎo)出數(shù)據(jù)。8.5.1導(dǎo)入導(dǎo)出數(shù)據(jù)方法概述導(dǎo)入/導(dǎo)出數(shù)據(jù)的可以有以下幾種方法:使用數(shù)據(jù)轉(zhuǎn)換服務(wù)(DataTransformationServices,DTS)導(dǎo)入/導(dǎo)出向?qū)Щ駾TS設(shè)計(jì)器創(chuàng)建可用于導(dǎo)入/導(dǎo)出和轉(zhuǎn)換數(shù)據(jù)的DTS包。使用SQLServer復(fù)制技術(shù)在整個(gè)企業(yè)內(nèi)分發(fā)數(shù)據(jù)。SQLServer中的復(fù)制技術(shù)可以制作數(shù)據(jù)復(fù)本,將這些復(fù)本移到不同位置,以及自動(dòng)同步數(shù)據(jù),從而使所有復(fù)本都具有相同的數(shù)據(jù)值??梢栽谕环?wù)器或通過(guò)LAN、WAN或Internet連接的不同服務(wù)器上的數(shù)據(jù)庫(kù)之間執(zhí)行復(fù)制。8.5.1導(dǎo)入導(dǎo)出數(shù)據(jù)方法概述使用bcp命令提示實(shí)用工具在SQLServer實(shí)例和數(shù)據(jù)文件之間導(dǎo)入和導(dǎo)出數(shù)據(jù)。從某個(gè)OLEDB提供程序中選擇數(shù)據(jù),并將數(shù)據(jù)從外部數(shù)據(jù)源復(fù)制到SQLServer實(shí)例。使用分布式查詢從另一個(gè)數(shù)據(jù)源中選擇數(shù)據(jù)并指定要插入的數(shù)據(jù)。使用INSERT語(yǔ)句將數(shù)據(jù)添加到現(xiàn)有表中。使用BULKINSERT語(yǔ)句將數(shù)據(jù)從數(shù)據(jù)文件導(dǎo)入到SQLServer實(shí)例。使用SELECTINTO語(yǔ)句根據(jù)現(xiàn)有表創(chuàng)建新表。1.DTS連接數(shù)據(jù)源連接:包括連接到標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)(如SQLServer、Access、Oracle、dBase和Paradox等)、與ODBC數(shù)據(jù)源的OLEDB連接、Excel電子表格數(shù)據(jù)、HTML源以及其他OLEDB提供程序。文件連接:DTS對(duì)文本文件提供額外的支持。指定文本文件連接時(shí),需要指定文件的格式。例如,文本文件是分隔字段格式還是固定字段格式、文本文件是Unicode格式還是ANSI格式、行分隔符和列分隔符、文本限定符以及第一行是否包含列名等。數(shù)據(jù)鏈接連接:在這些連接中,SQLServer外部的中間文件存儲(chǔ)連接字符串。2.DTS任務(wù)導(dǎo)入和導(dǎo)出數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)復(fù)制數(shù)據(jù)庫(kù)對(duì)象將消息發(fā)送到其他用戶和包以及從其他用戶和包接收消息對(duì)數(shù)據(jù)源執(zhí)行一組Transact-SQL語(yǔ)句或ActiveX腳本。3.DTS轉(zhuǎn)換DTS轉(zhuǎn)換是在數(shù)據(jù)到達(dá)目的之前應(yīng)用于一塊數(shù)據(jù)的一個(gè)或多個(gè)函數(shù)或操作。源數(shù)據(jù)未改變。例如,可以從源數(shù)據(jù)的一列中析取一個(gè)子串并將其復(fù)制到目的表。這個(gè)特定的子串函數(shù)是映射到源列的轉(zhuǎn)換。也可以使用某些特性搜索行并只對(duì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論