




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫原理與應(yīng)用主講:林祥果通訊系電子教研室(09民航運(yùn)輸信息管理)第8章
數(shù)據(jù)庫的創(chuàng)建和管理學(xué)習(xí)要點(diǎn):SQLServer數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)事務(wù)日志的概念數(shù)據(jù)庫的創(chuàng)建、刪除、管理主要內(nèi)容8.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)8.2創(chuàng)建和管理數(shù)據(jù)庫8.3備份和還原數(shù)據(jù)庫8.4數(shù)據(jù)的導(dǎo)入導(dǎo)出數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)庫文件在磁盤上如何存儲(chǔ)。SQLServer中每個(gè)數(shù)據(jù)庫由一組操作系統(tǒng)文件組成。數(shù)據(jù)庫中的所有數(shù)據(jù)、對(duì)象和數(shù)據(jù)庫操作日志都存儲(chǔ)在這些文件中。8.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)8.1.1數(shù)據(jù)庫文件數(shù)據(jù)庫文件可以分為三類:主數(shù)據(jù)庫文件次數(shù)據(jù)庫文件事務(wù)日志文件1.主數(shù)據(jù)庫文件(PrimaryDatabasefile)每個(gè)數(shù)據(jù)庫有且僅有一個(gè)主數(shù)據(jù)庫文件,主數(shù)據(jù)庫文件用來存儲(chǔ)數(shù)據(jù)庫的啟動(dòng)信息和部分或全部數(shù)據(jù)。一個(gè)數(shù)據(jù)庫可以有1到多個(gè)數(shù)據(jù)庫文件,其中只有一個(gè)文件為主數(shù)據(jù)庫文件。主數(shù)據(jù)庫文件的文件擴(kuò)展名為mdf。8.1.1數(shù)據(jù)庫文件2.次數(shù)據(jù)庫文件(SecondaryDatabaseFile)用于存儲(chǔ)主數(shù)據(jù)庫文件中未存儲(chǔ)的剩余數(shù)據(jù)和數(shù)據(jù)庫對(duì)象。一個(gè)數(shù)據(jù)庫可以沒有次數(shù)據(jù)庫文件,也可以有多個(gè)次數(shù)據(jù)庫文件。次數(shù)據(jù)庫文件的文件擴(kuò)展名為ndf。3.事務(wù)日志文件(TranscationLogFile)用于存儲(chǔ)數(shù)據(jù)庫的更新情況等事務(wù)日志信息。當(dāng)數(shù)據(jù)庫損壞時(shí),可以使用事務(wù)日志文件恢復(fù)數(shù)據(jù)庫。一個(gè)數(shù)據(jù)庫可以有1到多個(gè)事務(wù)日志文件。事務(wù)日志文件的擴(kuò)展名為ldf。8.1.1數(shù)據(jù)庫文件1.邏輯文件名邏輯文件名是在所有Transact-SQL語句中引用文件時(shí)所使用的名稱。邏輯文件名必須遵守SQLServer標(biāo)識(shí)符的命名規(guī)則,且對(duì)數(shù)據(jù)庫必須是唯一的。2.物理文件名數(shù)據(jù)庫文件在物理磁盤上的存儲(chǔ)路徑及文件名稱構(gòu)成數(shù)據(jù)庫文件的物理名稱,物理文件名必須遵從操作系統(tǒng)文件名的命名規(guī)則。8.1.1數(shù)據(jù)庫文件例如:邏輯文件名物理文件名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ù)庫文件組為了便于分配和管理,SQLServer允許將多個(gè)文件歸納為同一組,并賦予此組一個(gè)名稱,這就是文件組。1.主文件組(PrimaryFileGroup)所有數(shù)據(jù)庫都至少包含一個(gè)主文件組,主文件組中包含了所有的系統(tǒng)表,當(dāng)建立數(shù)據(jù)庫時(shí),主文件組包括主數(shù)據(jù)庫文件和未指定組的其他文件。
2.次文件組(SecondaryFileGroup)數(shù)據(jù)庫還可以包含用戶定義的文件組,也稱次文件組。8.1.2數(shù)據(jù)庫文件組3.默認(rèn)文件組每個(gè)數(shù)據(jù)庫中都有一個(gè)文件組作為默認(rèn)文件組運(yùn)行。當(dāng)SQLServer給創(chuàng)建時(shí)沒有為其指定文件組的表或索引分配頁時(shí),將從默認(rèn)文件組中進(jìn)行分配。一次只能有一個(gè)文件組作為默認(rèn)文件組。默認(rèn)文件組可以由用戶來指定。如果沒有指定默認(rèn)文件組,則主文件組是默認(rèn)文件組。8.1.2數(shù)據(jù)庫文件組文件組中的每個(gè)文件通常建立在不同的硬盤驅(qū)動(dòng)器上,這樣可減輕單個(gè)磁盤驅(qū)動(dòng)器的存儲(chǔ)負(fù)載,提高數(shù)據(jù)庫的存儲(chǔ)效率,從而提高系統(tǒng)性能。SQLServer2000在沒有文件組時(shí)也能有效地工作,因此許多系統(tǒng)不需要指定次文件組。在這種情況下,所有文件都包含在主文件組中。事務(wù)日志文件是獨(dú)立的,不能作為任何文件組的成員。數(shù)據(jù)庫文件和文件組的關(guān)系數(shù)據(jù)庫數(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ù)庫創(chuàng)建數(shù)據(jù)庫查看數(shù)據(jù)庫修改數(shù)據(jù)庫刪除數(shù)據(jù)庫8.2.1創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫的過程實(shí)際上是確定數(shù)據(jù)庫的名稱、設(shè)計(jì)數(shù)據(jù)庫所占用的存儲(chǔ)空間和文件的存放位置。每個(gè)新創(chuàng)建的數(shù)據(jù)庫都包含以下數(shù)據(jù)庫對(duì)象:關(guān)系圖、表、視圖、存儲(chǔ)過程、用戶、角色、規(guī)則、默認(rèn)、用戶定義的數(shù)據(jù)類型和用戶定義的函數(shù)。創(chuàng)建數(shù)據(jù)庫的途徑:兩個(gè)途徑企業(yè)管理器Transact-SQL語句“數(shù)據(jù)庫屬性”對(duì)話框向?qū)б?
使用向?qū)?chuàng)建數(shù)據(jù)庫菜單:工具→向?qū)А鷦?chuàng)建數(shù)據(jù)庫向?qū)Аぞ邫?一.
使用向?qū)?chuàng)建數(shù)據(jù)庫一.
使用向?qū)?chuàng)建數(shù)據(jù)庫一.
使用向?qū)?chuàng)建數(shù)據(jù)庫數(shù)據(jù)庫文件初始大小數(shù)據(jù)庫文件邏輯名稱物理文件名將默認(rèn)為:邏輯文件名.MDF一.
使用向?qū)?chuàng)建數(shù)據(jù)庫按百分比增長:發(fā)生增長時(shí)文件大小百分比一.
使用向?qū)?chuàng)建數(shù)據(jù)庫事務(wù)日志文件初始大小事務(wù)日志文件邏輯名稱物理文件名將默認(rèn)為:邏輯文件名.LDF一.
使用向?qū)?chuàng)建數(shù)據(jù)庫一.
使用向?qū)?chuàng)建數(shù)據(jù)庫二.使用“數(shù)據(jù)庫屬性”對(duì)話框創(chuàng)建數(shù)據(jù)庫菜單操作:右擊數(shù)據(jù)庫文件夾或在其下屬任一數(shù)據(jù)庫圖標(biāo),選擇“新建數(shù)據(jù)庫”選項(xiàng)。工具欄操作:二.
使用“數(shù)據(jù)庫屬性”創(chuàng)建數(shù)據(jù)庫單擊數(shù)據(jù)文件選項(xiàng)卡,設(shè)置其中的選項(xiàng)。在這里可以直接定義新的文件組二.
使用“數(shù)據(jù)庫屬性”創(chuàng)建數(shù)據(jù)庫單擊事務(wù)日志選項(xiàng)卡,設(shè)置其中的選項(xiàng)。三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫格式:CREATEDATABASE數(shù)據(jù)庫名稱[ON[<文件說明>[,...n]][,<文件組>[,...n]]][LOGON{<文件說明>[,...n]}]參數(shù)說明:數(shù)據(jù)庫名稱:新數(shù)據(jù)庫的名稱。ON關(guān)鍵字:其后的參數(shù)指定用來存儲(chǔ)數(shù)據(jù)庫數(shù)據(jù)的磁盤文件(數(shù)據(jù)文件)。<文件說明>:定義主文件組的數(shù)據(jù)文件。<文件組>:定義用戶文件組及其文件。LOGON:指定日志文件。其后的<文件說明>用以定義日志文件。如果沒有指定LOGON,將自動(dòng)創(chuàng)建一個(gè)日志文件,該文件使用系統(tǒng)生成的名稱,大小為數(shù)據(jù)庫中所有數(shù)據(jù)文件總大小的25%。三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫<文件說明>和<文件組>進(jìn)一步定義如下:<文件說明>::= [PRIMARY] ([NAME=邏輯文件名,] FILENAME='物理文件名' [,SIZE=初始大小] [,MAXSIZE={最大限制|UNLIMITED}] [,FILEGROWTH=增長量])[,...n] <文件組>::= FILEGROUP文件組名稱<文件說明>[,...n]三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫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盤建立了兩個(gè)文件夾:e:\sql_data和e:\sql_log,分別用來存放數(shù)據(jù)庫文件和事務(wù)日志文件,使用CREATEDATABASE語句創(chuàng)建一個(gè)company數(shù)據(jù)庫:三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫CREATEDATABASEcompany--創(chuàng)建數(shù)據(jù)庫ONPRIMARY--定義在主文件組上的文件( NAME=company_data,--邏輯名稱
FILENAME='e:\sql_data\company.mdf',--物理名稱
SIZE=10,--初始大小為10MB MAXSIZE=unlimited,--最大限制為無限大
FILEGROWTH=10%--增長速度為10%)LOGON--定義事務(wù)日志文件( NAME=company_log,--邏輯名稱
FILENAME='e:\sql_log\company.ldf',--物理名稱
SIZE=1,--初始大小為1MB MAXSIZE=5,--最大限制為5MB FILEGROWTH=1--增長速度為1MB)三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫練習(xí)8-1創(chuàng)建一個(gè)數(shù)據(jù)庫sample。主文件為sample_dat.mdf,邏輯文件名為sample_dat,大小為5MB,最大值50MB,按10%增長。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ù)庫,包含兩個(gè)數(shù)據(jù)文件和兩個(gè)事務(wù)日志文件。三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫CREATEDATABASEemployeesONPRIMARY--定義在主文件組上的文件( NAME=employee1,--主數(shù)據(jù)文件邏輯名稱
FILENAME='e:\sql_data\employee1.mdf',--物理名稱
SIZE=10,--主數(shù)據(jù)文件初始大小為10MB MAXSIZE=unlimited,--最大限制為無限大
FILEGROWTH=10%--增長速度為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ù)文件增長速度為1MB)三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫LOGON--定義事務(wù)日志文件( NAME=employeelog1,--事務(wù)日志文件邏輯名文件
FILENAME='e:\sql_log\employeelog1.ldf',--物理名稱
SIZE=10,--初始大小為50MB MAXSIZE=50,--最大限制為50MB FILEGROWTH=1--增長速度為1MB),( NAME=employeelog2,--事務(wù)日志邏輯文件名
FILENAME='e:\sql_log\employeelog2.ldf',--物理名稱
SIZE=10,--初始大小為10MB MAXSIZE=50,--最大限制為50MB FILEGROWTH=1--增長速度為1MB)三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫練習(xí)8-2創(chuàng)建一個(gè)只包含一個(gè)數(shù)據(jù)文件和一個(gè)日志文件的數(shù)據(jù)庫。該數(shù)據(jù)庫名為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ù)庫,包含一個(gè)主文件組和兩個(gè)次文件組,每個(gè)文件組包含兩個(gè)文件。三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫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語句創(chuàng)建數(shù)據(jù)庫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語句創(chuàng)建數(shù)據(jù)庫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語句創(chuàng)建數(shù)據(jù)庫練習(xí)2-3創(chuàng)建一個(gè)包含多個(gè)數(shù)據(jù)文件和日志文件的數(shù)據(jù)庫。該數(shù)據(jù)庫名為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ù)庫。該數(shù)據(jù)庫名為business,主文件組包含business_dat1和business_dat2兩個(gè)數(shù)據(jù)文件。文件組business_group包含文件數(shù)據(jù)文件business_dat3。該數(shù)據(jù)庫還包含一個(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ù)庫需要注意以下幾點(diǎn):每個(gè)數(shù)據(jù)庫都有一個(gè)所有者,可以在該數(shù)據(jù)庫中執(zhí)行某些特殊的活動(dòng),數(shù)據(jù)庫被創(chuàng)建之后,創(chuàng)建數(shù)據(jù)庫的用戶自動(dòng)成為該數(shù)據(jù)庫的所有者。默認(rèn)情況下,只有系統(tǒng)管理員和數(shù)據(jù)庫所有者可以創(chuàng)建數(shù)據(jù)庫,也可以授權(quán)其他用戶創(chuàng)建數(shù)據(jù)庫。在每個(gè)SQLServer實(shí)例下,最多只能創(chuàng)建32767個(gè)數(shù)據(jù)庫。所創(chuàng)建的數(shù)據(jù)庫名稱必須符合標(biāo)識(shí)符的命名規(guī)則。要讓日志文件能夠發(fā)揮作用,通常將數(shù)據(jù)文件和日志文件存儲(chǔ)在不同的物理磁盤上。三.使用T-SQL語句創(chuàng)建數(shù)據(jù)庫執(zhí)行CREATEDATABASE語句后,可以在企業(yè)管理器中查看創(chuàng)建數(shù)據(jù)庫的結(jié)果。方法是:
展開數(shù)據(jù)庫文件夾→右擊的數(shù)據(jù)庫→選擇“屬性”,打開數(shù)據(jù)庫屬性對(duì)話框,從各選項(xiàng)卡上可以查看所創(chuàng)建數(shù)據(jù)庫的各種屬性。8.2.2查看數(shù)據(jù)庫例如,test數(shù)據(jù)庫的屬性對(duì)話框:8.2.2查看數(shù)據(jù)庫用T-SQL語句查看數(shù)據(jù)庫的屬性使用系統(tǒng)存儲(chǔ)過程sp_helpdb可以查看某個(gè)數(shù)據(jù)庫或所有數(shù)據(jù)庫的屬性。格式:sp_helpdb
database_name
該存儲(chǔ)過程顯示了Sales數(shù)據(jù)庫的名稱、大小、所有者、創(chuàng)建日期以及數(shù)據(jù)文件和日志文件等屬性。例8-4查看數(shù)據(jù)庫Sales的屬性。
sp_helpdbSales例8-5查看所有數(shù)據(jù)庫的屬性
sp_helpdb
8.2.3修改數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫之后,可以在企業(yè)管理器中利用數(shù)據(jù)庫屬性對(duì)話框直接修改創(chuàng)建時(shí)的某些設(shè)置,或修改創(chuàng)建時(shí)無法設(shè)置的屬性,也可以使用Transcat-SQL語言的ALTERDATABASE語句修改數(shù)據(jù)庫。一.使用企業(yè)管理器修改數(shù)據(jù)庫展開數(shù)據(jù)庫文件夾→右擊數(shù)據(jù)庫名稱→選擇“屬性”命令,打開數(shù)據(jù)庫屬性對(duì)話框。在該對(duì)話框上有多個(gè)選項(xiàng)卡,可以在各選項(xiàng)卡上查看或修改數(shù)據(jù)庫文件及其他屬性。一.使用企業(yè)管理器修改數(shù)據(jù)庫“數(shù)據(jù)庫屬性”對(duì)話框各選項(xiàng)說明如下:限制訪問:指定只有db_owner、dbcreator
或sysadmin
的成員的用戶才可以訪數(shù)據(jù)庫。單用戶:指定一次只能有一個(gè)用戶訪問數(shù)據(jù)庫。模型:指定數(shù)據(jù)庫的恢復(fù)模型類型。以確定如何備份數(shù)據(jù)以及能承受何種程度的數(shù)據(jù)丟失ANSINULL默認(rèn)設(shè)置:指定將數(shù)據(jù)表列默認(rèn)定義為NULL還是NOTNULL。當(dāng)選擇此選項(xiàng)時(shí),在CREATETABLE或ALTERTABLE語句過程中,沒有顯式定義為NOTNULL的列都將默認(rèn)為允許空值。一.使用企業(yè)管理器修改數(shù)據(jù)庫遞歸觸發(fā)器:允許觸發(fā)器遞歸調(diào)用。SQLServer設(shè)定的觸發(fā)器遞歸調(diào)用的層數(shù)最多為32層。自動(dòng)更新統(tǒng)計(jì)信息:指定在優(yōu)化期間自動(dòng)生成查詢優(yōu)化所需的過時(shí)統(tǒng)計(jì)信息。殘缺頁檢測:允許自動(dòng)檢測有損壞的頁。自動(dòng)關(guān)閉:當(dāng)數(shù)據(jù)庫中無用戶時(shí),自動(dòng)關(guān)閉該數(shù)據(jù)庫,并將所占用的資源交還給操作系統(tǒng)。自動(dòng)收縮:允許定期對(duì)數(shù)據(jù)庫進(jìn)行檢查,當(dāng)數(shù)據(jù)庫文件或日志文件的未用空間超過其大小的25%時(shí),系統(tǒng)將會(huì)自動(dòng)縮減文件使其未用空間等于25%。一.使用企業(yè)管理器修改數(shù)據(jù)庫自動(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ù)庫名稱{ADDFILE<文件說明>[,...n][TOFILEGROUP文件組名稱]|ADDLOGFILE<文件說明>[,...n]|REMOVEFILE邏輯文件名|ADDFILEGROUP文件組名稱|REMOVEFILEGROUP文件組名稱|MODIFYFILE<文件說明>|MODIFYNAME=新數(shù)據(jù)庫名|MODIFYFILEGROUP文件組名稱{文件組屬性|NAME=新文件組名稱}二.使用T-SQL語句修改數(shù)據(jù)庫參數(shù)說明:數(shù)據(jù)庫名稱:是要更改的數(shù)據(jù)庫的名稱。ADDFILE:指定要添加文件。該文件由后面的<文件說明>指定。<文件說明>定義如下:
<文件說明>::=(NAME=邏輯文件名
[,NEWNAME=新邏輯文件名][,FILENAME='物理文件名'][,SIZE=大小][,MAXSIZE={最大限制|UNLIMITED}][,FILEGROWTH=增長量])二.使用T-SQL語句修改數(shù)據(jù)庫TOFILEGROUP:表示要將指定的文件添加到其后指定的的文件組中。ADDLOGFILE:表示要將其后指定的日志文件添加到指定的數(shù)據(jù)庫中。REMOVEFILE:從數(shù)據(jù)庫系統(tǒng)表中刪除文件描述并刪除物理文件。ADDFILEGROUP:指定要添加文件組。REMOVEFILEGROUP:從數(shù)據(jù)庫中刪除文件組。只有當(dāng)文件組為空時(shí)才能將其刪除。二.使用T-SQL語句修改數(shù)據(jù)庫MODIFYFILE:表示要更改指定的文件,可以更改文件名稱、大小、增長情況和最大限制。一次只能更改一種屬性。如果指定了SIZE,那么新的大小必須比文件當(dāng)前大小還大。MODIFYNAME=新數(shù)據(jù)庫名:表示要重命名數(shù)據(jù)庫。MODIFYFILEGROUP文件組名稱{文件組屬性|NAME=新文件組名稱}:指定要修改的文件組和所需的改動(dòng)。如果指定“文件組名稱”和“NAME=新文件組名稱”,則將此文件組的名稱改為新文件組名稱。如果指定“文件組名稱”和“文件組屬性”,則表示修改文件組的屬性。二.使用T-SQL語句修改數(shù)據(jù)庫“文件組屬性”的值有:READONLY——指定文件組為只讀。不允許更新其中的對(duì)象。主文件組不能設(shè)置為只讀。READWRITE——指定文件組為讀寫屬性。允許更新文件組中的對(duì)象。只有具有排它數(shù)據(jù)庫訪問權(quán)限的用戶才能將文件組標(biāo)記為讀/寫。DEFAULT——將文件組指定為默認(rèn)數(shù)據(jù)庫文件組。只能有一個(gè)數(shù)據(jù)庫文件組是默認(rèn)的。二.使用T-SQL語句修改數(shù)據(jù)庫二.使用T-SQL語句修改數(shù)據(jù)庫【例8-6】添加一個(gè)事務(wù)日志文件到employees數(shù)據(jù)庫中。ALTERDATABASEemployeesADDLOGFILE--添加日志文件(NAME=employeelog3,FILENAME='e:\sql_log\employeelog3.ldf',SIZE=1,MAXSIZE=50,FILEGROWTH=1)二.使用T-SQL語句修改數(shù)據(jù)庫【例8-7】添加一個(gè)包含兩個(gè)數(shù)據(jù)文件的文件組到employees數(shù)據(jù)庫中。二.使用T-SQL語句修改數(shù)據(jù)庫
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ù)庫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ù)庫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ù)庫employees中的一個(gè)數(shù)據(jù)文件employee4。
ALTERDATABASEemployees REMOVEFILEemployee4二.使用T-SQL語句修改數(shù)據(jù)庫練習(xí)8-9從數(shù)據(jù)庫sample中刪除文件sampuser_dat2。ALTERDATABASEsampleREMOVEFILEsampuser_dat2練習(xí)8-10刪除數(shù)據(jù)庫sample中的文件組USER1。ALTERDATABASEsampleREMOVEFILEsampuser_dat1ALTERDATABASEsampleREMOVEFILEGROUPUSER1注意:在刪除文件組時(shí)必須先刪除文件組中所包含的文件。
【例8-9】給添加到數(shù)據(jù)庫employees中的文件。employee3增加大小。
ALTERDATABASEemployees MODIFYFILE (NAME=employee3, SIZE=5MB)二.使用T-SQL語句修改數(shù)據(jù)庫練習(xí)8-11修改數(shù)據(jù)庫sample中數(shù)據(jù)文件sample_dat2的屬性,將其初始大小改為10MB,最大容量改為80MB,增長幅度改為5MB。ALTERDATABASEsampleMODIFFILE(NAME=sample_dat2,SIZE=10,MAXSIZE=80,FILEGROWTH=5)【例8-10】將數(shù)據(jù)庫文件名employees修改成MyEmployeesALTERDATABASEemployeesMODIFYNAME=MyEmployees二.使用T-SQL語句修改數(shù)據(jù)庫練習(xí)8-12修改數(shù)據(jù)庫business中文件組business_group的屬性,將其改名為group1,并設(shè)置為DEFAULT屬性(即該文件組為默認(rèn)文件組)。ALTERDATABASEbusinessMODIFYFILEGROUPbusiness_groupNAME=group1ALTERDATABASEbusinessMODIFYFILEGROUPgroup1DEFAULT練習(xí)8-13將數(shù)據(jù)庫student改名為stud_teacher。ALTERDATABASEstudentMODIFYNAME=stud_teacher
重命名數(shù)據(jù)庫語法形式為:sp_renamedb‘old_name’,’new_name’old_name:數(shù)據(jù)庫的當(dāng)前名稱;new_name是數(shù)據(jù)庫的新名稱。練習(xí)8-14將數(shù)據(jù)庫business更名為company。
sp_renamedb'business','company
8.2.4刪除數(shù)據(jù)庫對(duì)于不再使用的數(shù)據(jù)庫,可以刪除它們以釋放所占用的磁盤空間??梢栽谄髽I(yè)管理器中刪除數(shù)據(jù)庫,也可以使用DROPDATABASE語句刪除數(shù)據(jù)庫。一.使用企業(yè)管理器刪除數(shù)據(jù)庫快捷菜單操作:右擊所要數(shù)據(jù)庫名稱→選擇“刪除”命令工具欄操作:單擊數(shù)據(jù)庫名稱→使用按鈕彈出對(duì)話框如下圖。二.使用T-SQL語句刪除數(shù)據(jù)庫格式:
DROPDATABASE數(shù)據(jù)庫名稱[,…n]【例8-11】刪除創(chuàng)建的數(shù)據(jù)庫company。
DROPDATABASEcompany顯示結(jié)果為:
正在刪除數(shù)據(jù)庫文件'e:\sql_log\company.ldf'。正在刪除數(shù)據(jù)庫文件'e:\sql_data\company.mdf'。注意:如果數(shù)據(jù)庫當(dāng)前正在使用,則無法刪除該數(shù)據(jù)庫。8.3備份數(shù)據(jù)庫在數(shù)據(jù)庫的使用過程中,難免會(huì)由于病毒、人為失誤、機(jī)器故障等原因造成數(shù)據(jù)的丟失或損壞。數(shù)據(jù)對(duì)于一個(gè)企業(yè)、政府部門來說往往是非常重要的,一旦出現(xiàn)問題,造成的損失是巨大的。為了保證數(shù)據(jù)庫的安全性,防止數(shù)據(jù)庫中數(shù)據(jù)的意外丟失,應(yīng)經(jīng)常對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行備份,以便在數(shù)據(jù)庫出故障的時(shí)候進(jìn)行及時(shí)有效的恢復(fù)。4.3.1備份概述備份內(nèi)容系統(tǒng)數(shù)據(jù)庫用戶數(shù)據(jù)庫事務(wù)日志備份方式(備份類型)完全數(shù)據(jù)庫備份差異數(shù)據(jù)庫備份事務(wù)日志備份數(shù)據(jù)庫文件和文件組備份8.3.1備份概述1.完全數(shù)據(jù)庫備份
備份數(shù)據(jù)庫的所有表的數(shù)據(jù)及模式,以及對(duì)應(yīng)的文件結(jié)構(gòu),包括對(duì)事務(wù)日志中的事務(wù)進(jìn)行備份。2.差異數(shù)據(jù)庫備份
只記錄自上次完全數(shù)據(jù)庫備份后發(fā)生更改的數(shù)據(jù)。差異備份的數(shù)據(jù)量比完全備份小而且備份速度快,因此可以更經(jīng)常地備份,經(jīng)常備份將減少丟失數(shù)據(jù)的危險(xiǎn)。8.3.1備份概述3.事務(wù)日志備份
事務(wù)日志是自上次備份事務(wù)日志后對(duì)數(shù)據(jù)庫執(zhí)行的所有事務(wù)的一系列記錄。事務(wù)日志備份只考慮在日志中所記錄的變化,是基于邏輯操作的備份。可以使用事務(wù)日志備份將數(shù)據(jù)庫恢復(fù)到特定的即時(shí)點(diǎn)或恢復(fù)到故障點(diǎn)。4.數(shù)據(jù)庫文件和文件組備份
只備份特定的文件或文件組,常用于超大型數(shù)據(jù)庫的備份。8.3.2創(chuàng)建和刪除備份設(shè)備磁盤備份設(shè)備:指硬盤或其它磁盤存儲(chǔ)介質(zhì)上的文件,與常規(guī)操作系統(tǒng)文件一樣??梢栽诒镜胤?wù)器的磁盤上或遠(yuǎn)程共享磁盤上定義磁盤備份設(shè)備。磁帶備份設(shè)備:磁帶設(shè)備只能物理連接到運(yùn)行SQLServer實(shí)例的計(jì)算機(jī)上。SQLServer不支持備份到遠(yuǎn)程磁帶設(shè)備上。在進(jìn)行備份以前一般要指定或創(chuàng)建備份設(shè)備,備份設(shè)備是用來存儲(chǔ)數(shù)據(jù)庫、事務(wù)日志或文件和文件組備份的存儲(chǔ)介質(zhì)。包括磁盤和磁帶設(shè)備。8.3.2創(chuàng)建和刪除備份設(shè)備物理設(shè)備名稱:是操作系統(tǒng)用來標(biāo)識(shí)備份設(shè)備的名稱,如“D:\MyBackups\Student.bak”。邏輯設(shè)備名稱:是用來標(biāo)識(shí)物理備份設(shè)備的別名或公用名稱,用以簡化物理設(shè)備名稱。例如,邏輯設(shè)備名稱可以是“STDBackup”,而物理設(shè)備名稱則是“D:\MyBackups\Student.bak”。
SQLServer使用物理設(shè)備名稱或邏輯設(shè)備名稱來標(biāo)識(shí)備份設(shè)備。8.3.2創(chuàng)建和刪除備份設(shè)備1.使用企業(yè)管理器創(chuàng)建設(shè)備
選擇服務(wù)器→展開“管理”文件夾→右擊“備份”→選擇“新建備份設(shè)備”命令8.3.2創(chuàng)建和刪除備份設(shè)備打開“備份設(shè)備屬性”對(duì)話框:邏輯備份設(shè)備名稱物理備份設(shè)備名稱8.3.2創(chuàng)建和刪除備份設(shè)備2.使用企業(yè)管理器刪除備份設(shè)備
創(chuàng)建備份設(shè)備后,在企業(yè)管理器的右側(cè)窗格中會(huì)顯示該備份設(shè)備的名稱、物理位置和設(shè)備類型,用鼠標(biāo)右擊要?jiǎng)h除的備份設(shè)備的名稱,從彈出的快捷菜單中選擇“刪除”命令,則可以刪除相應(yīng)的備份設(shè)備。8.3.2創(chuàng)建和刪除備份設(shè)備3.使用系統(tǒng)存儲(chǔ)過程創(chuàng)建備份設(shè)備格式:sp_addumpdevice[@devtype=]'設(shè)備類型',[@logicalname=]'邏輯備份設(shè)備名',[@physicalname=]'物理備份設(shè)備名'參數(shù)說明:[@devtype=]‘設(shè)備類型’:指定備份設(shè)備的類型,可以是: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)程硬盤文件,可以使用格式“\\主機(jī)名\共享路徑名\路徑名\文件名\”表示;對(duì)于磁帶設(shè)備,用“\\.\TAPEn”表示,其中n為磁帶驅(qū)動(dòng)器序列號(hào)。8.3.2創(chuàng)建和刪除備份設(shè)備【例8-9】創(chuàng)建磁盤一個(gè)備份設(shè)備,邏輯名稱為“copy1”,物理名稱為“d:\Mybackup\company.bak”
EXECsp_addumpdevice
@devtype='disk',@logicalname='copy1',
@physicalname='d:\Mybackup\company.bak'也可以簡化成:
EXECsp_addumpdevice
'disk','copy1','d:\Mybackup\company.bak'這里的EXEC表示執(zhí)行存儲(chǔ)過程。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ǔ)過程sp_dropdevice刪除備份設(shè)備格式:
sp_dropdevice
[@logicalname=]'邏輯備份設(shè)備名'[,[@delfile=]'刪除文件']參數(shù)說明:
@delfile:指是否同時(shí)刪除物理備份文件。如果該參數(shù)指定為DELFILE,那么就會(huì)刪除設(shè)備物理文件名指定的磁盤文件。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)打開備份數(shù)據(jù)庫話框方法一:右擊數(shù)據(jù)庫→選擇“所有任務(wù)”→選擇“備份數(shù)據(jù)庫”令方法二:展開“數(shù)據(jù)庫”文件夾→展開“管理”文件夾→右擊“備份”→選擇“備份數(shù)據(jù)庫”方法三:打開“工具”菜單→選擇“備份數(shù)據(jù)庫”1.在企業(yè)管理器中使用備份數(shù)據(jù)庫對(duì)話框執(zhí)行備份8.3.3執(zhí)行備份8.3.3執(zhí)行備份8.3.3執(zhí)行備份2.在企業(yè)管理器中使用備份向?qū)?zhí)行備份(1)單擊服務(wù)器
→
打開“工具”菜單→選擇“向?qū)А被騿螕?/p>
工具欄圖標(biāo)
打開“選擇向?qū)А睂?duì)話框:8.3.3執(zhí)行備份(2)選擇數(shù)據(jù)庫:8.3.3執(zhí)行備份(3)輸入備份名稱和描述信息:8.3.3執(zhí)行備份(4)選擇備份類型: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ù)庫備份格式:
BACKUPDATABASE數(shù)據(jù)庫名稱
TO<備份設(shè)備>[,...n][WITH[NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]3.使用BACKUPDATABASE語句備份數(shù)據(jù)庫8.3.3執(zhí)行備份說明:<備份設(shè)備>:指定備份要使用的邏輯或物理備份設(shè)備。定義如下:
<備份設(shè)備>::={邏輯備份設(shè)備名}|{DISK|=TAPE}'物理備份設(shè)備名'INIT:指定應(yīng)重寫所有備份集。NOINIT:表示備份集將追加到指定的設(shè)備現(xiàn)有數(shù)據(jù)之后,以保留現(xiàn)有的備份集。完全數(shù)據(jù)庫備份是制作數(shù)據(jù)庫中所有內(nèi)容的一個(gè)副本,備份過程花費(fèi)時(shí)間相對(duì)較長,備份占用的空間大,因此不宜頻繁進(jìn)行。8.3.3執(zhí)行備份【例8-16】將“學(xué)生管理”數(shù)據(jù)庫備份到d盤的mybackup文件夾下的“學(xué)生管理.bak”文件中。
--首先先創(chuàng)建一個(gè)備份設(shè)備
sp_addumpdevice'disk','mycopy1','d:\mybackup\學(xué)生管理.bak'--用BACKUPDATABASE備份學(xué)生管理數(shù)據(jù)庫
BACKUPDATABASE學(xué)生管理
TOmycopy1WITHNAME='學(xué)生管理備份',DESCRIPTION='完全備份'8.3.3執(zhí)行備份【例8-15】將“學(xué)生管理”數(shù)據(jù)庫備份到網(wǎng)絡(luò)中的另一臺(tái)主機(jī)ServerX上。
sp_addumpdevice
'disk','STDcopy','\\ServerX\backup\student.dat'BACKUPDATABASE學(xué)生管理TOSTDcopy8.3.3執(zhí)行備份(2)差異數(shù)據(jù)庫備份指對(duì)最近一次完全數(shù)據(jù)庫備份結(jié)束以來發(fā)生改變的數(shù)據(jù)進(jìn)行備份。當(dāng)數(shù)據(jù)庫從上次備份以來只修改了很少的數(shù)據(jù)時(shí),適合使用差異備份。格式:
BACKUPDATABASE數(shù)據(jù)庫名稱
TO<備份設(shè)備>[,...n]WITH
DIFFERENTIAL[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]8.3.3執(zhí)行備份【例8-16】假設(shè)對(duì)“學(xué)生管理”數(shù)據(jù)庫進(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ù)庫很大時(shí),對(duì)整個(gè)數(shù)據(jù)庫進(jìn)行備份可能會(huì)花費(fèi)很多時(shí)間,這時(shí)可以采用文件或文件組備份,即對(duì)數(shù)據(jù)庫中的部分文件或文件組進(jìn)行備份。8.3.3執(zhí)行備份格式:
BACKUPDATABASE數(shù)據(jù)庫名稱
<文件或文件組>[,...n]TO<備份設(shè)備>[,...n][WITHDIFFERENTIAL[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]<文件或文件組>::={FILE=邏輯文件名|FILEGROUP=邏輯文件組名}8.3.3執(zhí)行備份【例8-17】將test數(shù)據(jù)庫的grp1_file1文件備份到文件“E:\temp\grp1_file1.dat”中。
BACKUPDATABASEtestFILE='grp1_file1'TODISK='E:\temp\grp1_file1.dat'【例8-18】將test數(shù)據(jù)庫的文件組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ù)庫執(zhí)行的所有事務(wù)的一系列記錄,備份事務(wù)日志將對(duì)最近一次備份事務(wù)日志以來的所有事務(wù)日志進(jìn)行備份。格式:
BACKUPLOG數(shù)據(jù)庫名稱
TO<備份設(shè)備>[,...n][WITH[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]8.3.3執(zhí)行備份【例8-19】將“學(xué)生管理”數(shù)據(jù)庫的日志文件備份到文件“e:\temp\MyLog1.bak”中。
EXECsp_addumpdevice'disk','MyLog1','e:\temp\MyLog1.bak'BACKUPLOG學(xué)生管理TOMyLog18.3.4還原數(shù)據(jù)庫數(shù)據(jù)庫備份后,一旦系統(tǒng)發(fā)生崩潰或者執(zhí)行了錯(cuò)誤的數(shù)據(jù)庫操作,就可以從備份文件中恢復(fù)(還原)數(shù)據(jù)庫,讓數(shù)據(jù)庫回到備份時(shí)的狀態(tài)。通常在以下情況下需要恢復(fù)數(shù)據(jù)庫。媒體故障。用戶操作錯(cuò)誤。服務(wù)器永久丟失。將數(shù)據(jù)庫從一臺(tái)服務(wù)器復(fù)制到另一臺(tái)服務(wù)器。恢復(fù)數(shù)據(jù)庫之前,需要限制其他用戶訪問數(shù)據(jù)庫:右擊數(shù)據(jù)庫→選擇“屬性”→選擇“選項(xiàng)”→選擇“限制訪問”、單用戶8.3.4還原數(shù)據(jù)庫恢復(fù)內(nèi)容:恢復(fù)整個(gè)數(shù)據(jù)庫恢復(fù)部分?jǐn)?shù)據(jù)庫恢復(fù)數(shù)據(jù)庫文件或文件組恢復(fù)數(shù)據(jù)庫事務(wù)日志恢復(fù)途徑:使用企業(yè)管理器中使用RESTOREDATABASE8.3.4還原數(shù)據(jù)庫1.使用企業(yè)管理器恢復(fù)數(shù)據(jù)庫單擊服務(wù)器名稱→選擇“工具”菜單→選擇“還原數(shù)據(jù)庫”或右擊“數(shù)據(jù)庫”或數(shù)據(jù)庫名稱→選擇“所有任務(wù)”→選擇“還原數(shù)據(jù)庫”命令。兩種方法都會(huì)打開“還原數(shù)據(jù)庫”對(duì)話框:8.3.4還原數(shù)據(jù)庫“還原數(shù)據(jù)庫”對(duì)話框——“常規(guī)”選項(xiàng)卡8.3.4還原數(shù)據(jù)庫“還原數(shù)據(jù)庫”對(duì)話框——“選項(xiàng)”選項(xiàng)卡8.3.4還原數(shù)據(jù)庫2.使用RESTOREDATABASE語句恢復(fù)數(shù)據(jù)庫(1)恢復(fù)完全備份數(shù)據(jù)庫和差異備份數(shù)據(jù)庫格式:
RESTOREDATABASE數(shù)據(jù)庫名稱
[FROM<備份設(shè)備>[,...n]][WITH[[,]FILE=文件號(hào)]
[[,]MOVE'邏輯文件名'TO'物理文件名'][,...n][[,]{NORECOVERY|RECOVERY}][[,]REPLACE]]8.3.4還原數(shù)據(jù)庫說明:文件號(hào):要還原的備份集。例如,文件號(hào)為2表示第二個(gè)備份集。NORECOVERY:指示還原操作不回滾任何未提交的事務(wù)。當(dāng)還原數(shù)據(jù)庫備份和多個(gè)事務(wù)日志時(shí),或在需要使用多個(gè)RESTORE語句時(shí)(例如在完整數(shù)據(jù)庫備份后進(jìn)行差異數(shù)據(jù)庫備份),SQLServer要求在除最后的RESTORE語句外的所有其它語句上使用WITHNORECOVERY選項(xiàng)。RECOVERY:指示還原操作回滾任何未提交的事務(wù)。在恢復(fù)完成后即可隨時(shí)使用數(shù)據(jù)庫。REPLACE:指定如果存在同名數(shù)據(jù)庫,將覆蓋現(xiàn)有的數(shù)據(jù)庫。8.3.4還原數(shù)據(jù)庫【例8-20】設(shè)在E盤temp文件夾下有一個(gè)職工數(shù)據(jù)庫的完全備份文件“職工.bak”,恢復(fù)該數(shù)據(jù)庫,將恢復(fù)后的數(shù)據(jù)庫名稱改為“職工信息”。如果當(dāng)前服務(wù)器中存在“職工信息”數(shù)據(jù)庫,則覆蓋該數(shù)據(jù)庫。方法一:使用備份設(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ù)庫方法二:直接指定磁盤文件名
RESTOREDATABASE職工信息
FROMDISK='E:\temp\職工.bak'WITHMOVE'職工_data'TO'e:\sql_data\職工信息.mdf',MOVE'職工_log'TO'e:\sql_log\職工信息.lgf',REPLACE8.3.4還原數(shù)據(jù)庫【例8-21】設(shè)第一天做了一個(gè)“學(xué)生管理”數(shù)據(jù)庫的完全備份,第2天做了一個(gè)“學(xué)生管理”數(shù)據(jù)庫的差異備份,之后數(shù)據(jù)庫出現(xiàn)故障,將數(shù)據(jù)庫恢復(fù)到做差異備份時(shí)的狀態(tài)。8.3.4還原數(shù)據(jù)庫
--恢復(fù)完全備份
RESTOREDATABASE學(xué)生管理
FROMmycopy1WITHFILE=1,NORECOVERY --這時(shí)數(shù)據(jù)庫無法使用,繼續(xù)恢復(fù)差異備份
RESTOREDATABASE學(xué)生管理
FROMmycopy1WITHFILE=2,RECOVERY
--這時(shí)數(shù)據(jù)庫可以使用8.3.4還原數(shù)據(jù)庫(2)恢復(fù)事務(wù)日志格式:
RESTORELOG數(shù)據(jù)庫名稱
[FROM<備份設(shè)備>[,...n]][WITH[[,]FILE=文件號(hào)]
[[,]MOVE'邏輯文件名'TO'物理文件名'][,...n][[,]{NORECOVERY|RECOVERY}]]8.3.4還原數(shù)據(jù)庫【例8-22】假設(shè)對(duì)“學(xué)生管理”數(shù)據(jù)庫先后做了完全數(shù)據(jù)庫備份、差異數(shù)據(jù)庫備份和事務(wù)日志備份現(xiàn)在利用這三個(gè)備份來恢復(fù)數(shù)據(jù)庫。
--恢復(fù)完全備份
RESTOREDATABASE學(xué)生管理
FROMmycopy1WITHFILE=1,NORECOVERY8.3.4還原數(shù)據(jù)庫--這時(shí)數(shù)據(jù)庫無法使用,繼續(xù)恢復(fù)差異備份RESTOREDATABASE學(xué)生管理FROMmycopy1WITHFILE=2,NORECOVERY--這時(shí)數(shù)據(jù)庫仍然無法使用,繼續(xù)恢復(fù)事務(wù)日志備份RESTORELOG學(xué)生管理FROMMylog1WITHRECOVERY
--完成恢復(fù),數(shù)據(jù)庫可以使用利用數(shù)據(jù)庫的維護(hù)計(jì)劃向?qū)Э梢苑奖愕卦O(shè)置數(shù)據(jù)庫的核心維護(hù)任務(wù),以便于定期地執(zhí)行這些任務(wù)8.4維護(hù)數(shù)據(jù)庫8.5數(shù)據(jù)的導(dǎo)入導(dǎo)出導(dǎo)入導(dǎo)出數(shù)據(jù)方法概述DTS概述DTS導(dǎo)出向?qū)TS導(dǎo)入向?qū)г谑褂肧QLServer的過程中,經(jīng)常需要將其他應(yīng)用程序(例如Access數(shù)據(jù)庫或ASCII文本文件)的數(shù)據(jù)移植到SQLServer2000數(shù)據(jù)庫中,或者將SQLServer2000的數(shù)據(jù)移植到其他數(shù)據(jù)庫中。這種在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ù)器或通過LAN、WAN或Internet連接的不同服務(wù)器上的數(shù)據(jù)庫之間執(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語句將數(shù)據(jù)添加到現(xiàn)有表中。使用BULKINSERT語句將數(shù)據(jù)從數(shù)據(jù)文件導(dǎo)入到SQLServer實(shí)例。使用SELECTINTO語句根據(jù)現(xiàn)有表創(chuàng)建新表。1.DTS連接數(shù)據(jù)源連接:包括連接到標(biāo)準(zhǔn)數(shù)據(jù)庫(如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ù)庫對(duì)象將消息發(fā)送到其他用戶和包以及從其他用戶和包接收消息對(duì)數(shù)據(jù)源執(zhí)行一組Transact-SQL語句或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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游景區(qū)擴(kuò)建用地居間
- 新能源汽車充電樁上市公司
- 新能源技術(shù)發(fā)展及應(yīng)用練習(xí)題
- 三農(nóng)村電商三農(nóng)村電商與旅游融合方案
- 農(nóng)業(yè)綜合開發(fā)項(xiàng)目可行性研究報(bào)告
- 醫(yī)療器械可行性分析報(bào)告模板
- 磐安縣生活垃圾焚燒發(fā)電項(xiàng)目
- 電影娛樂產(chǎn)業(yè)制作與發(fā)行指南
- 品牌傳播策略實(shí)施方案
- 三農(nóng)創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略作業(yè)指導(dǎo)書
- 《以哪吒精神照亮成長之路》開學(xué)家長會(huì)課件
- 公司休假銷假單模板
- 婦產(chǎn)科介入治療護(hù)理常規(guī)
- 《基于杜邦分析法的企業(yè)財(cái)務(wù)分析國內(nèi)外文獻(xiàn)綜述》
- 統(tǒng)計(jì)學(xué)調(diào)查報(bào)告(共5篇)
- 四川大學(xué)C語言上機(jī)考試題
- 2022年蕪湖職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試題庫及答案解析
- DBJ∕T 15-134-2018 廣東省地下管線探測技術(shù)規(guī)程
- 人崗匹配分析和總結(jié)
- 幼小銜接拼音課程 課件(共49張PPT)
- 2020新版?zhèn)€人征信報(bào)告模板
評(píng)論
0/150
提交評(píng)論