




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫原理與應用主講:林祥果通訊系電子教研室(09民航運輸信息管理)第8章
數據庫的創建和管理學習要點:SQLServer數據庫的存儲結構事務日志的概念數據庫的創建、刪除、管理主要內容8.1數據庫的存儲結構8.2創建和管理數據庫8.3備份和還原數據庫8.4數據的導入導出數據庫的存儲結構是指數據庫文件在磁盤上如何存儲。SQLServer中每個數據庫由一組操作系統文件組成。數據庫中的所有數據、對象和數據庫操作日志都存儲在這些文件中。8.1數據庫的存儲結構8.1.1數據庫文件數據庫文件可以分為三類:主數據庫文件次數據庫文件事務日志文件1.主數據庫文件(PrimaryDatabasefile)每個數據庫有且僅有一個主數據庫文件,主數據庫文件用來存儲數據庫的啟動信息和部分或全部數據。一個數據庫可以有1到多個數據庫文件,其中只有一個文件為主數據庫文件。主數據庫文件的文件擴展名為mdf。8.1.1數據庫文件2.次數據庫文件(SecondaryDatabaseFile)用于存儲主數據庫文件中未存儲的剩余數據和數據庫對象。一個數據庫可以沒有次數據庫文件,也可以有多個次數據庫文件。次數據庫文件的文件擴展名為ndf。3.事務日志文件(TranscationLogFile)用于存儲數據庫的更新情況等事務日志信息。當數據庫損壞時,可以使用事務日志文件恢復數據庫。一個數據庫可以有1到多個事務日志文件。事務日志文件的擴展名為ldf。8.1.1數據庫文件1.邏輯文件名邏輯文件名是在所有Transact-SQL語句中引用文件時所使用的名稱。邏輯文件名必須遵守SQLServer標識符的命名規則,且對數據庫必須是唯一的。2.物理文件名數據庫文件在物理磁盤上的存儲路徑及文件名稱構成數據庫文件的物理名稱,物理文件名必須遵從操作系統文件名的命名規則。8.1.1數據庫文件例如:邏輯文件名物理文件名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數據庫文件組為了便于分配和管理,SQLServer允許將多個文件歸納為同一組,并賦予此組一個名稱,這就是文件組。1.主文件組(PrimaryFileGroup)所有數據庫都至少包含一個主文件組,主文件組中包含了所有的系統表,當建立數據庫時,主文件組包括主數據庫文件和未指定組的其他文件。
2.次文件組(SecondaryFileGroup)數據庫還可以包含用戶定義的文件組,也稱次文件組。8.1.2數據庫文件組3.默認文件組每個數據庫中都有一個文件組作為默認文件組運行。當SQLServer給創建時沒有為其指定文件組的表或索引分配頁時,將從默認文件組中進行分配。一次只能有一個文件組作為默認文件組。默認文件組可以由用戶來指定。如果沒有指定默認文件組,則主文件組是默認文件組。8.1.2數據庫文件組文件組中的每個文件通常建立在不同的硬盤驅動器上,這樣可減輕單個磁盤驅動器的存儲負載,提高數據庫的存儲效率,從而提高系統性能。SQLServer2000在沒有文件組時也能有效地工作,因此許多系統不需要指定次文件組。在這種情況下,所有文件都包含在主文件組中。事務日志文件是獨立的,不能作為任何文件組的成員。數據庫文件和文件組的關系數據庫數據文件日志文件主文件組(1個)次文件組(0~多個)邏輯文件名1邏輯文件名2邏輯文件名n物理文件名1物理文件名2物理文件名n……邏輯文件名1邏輯文件名2邏輯文件名n物理文件名1物理文件名2物理文件名n……主數據文件8.2創建和管理數據庫創建數據庫查看數據庫修改數據庫刪除數據庫8.2.1創建數據庫創建數據庫的過程實際上是確定數據庫的名稱、設計數據庫所占用的存儲空間和文件的存放位置。每個新創建的數據庫都包含以下數據庫對象:關系圖、表、視圖、存儲過程、用戶、角色、規則、默認、用戶定義的數據類型和用戶定義的函數。創建數據庫的途徑:兩個途徑企業管理器Transact-SQL語句“數據庫屬性”對話框向導一.
使用向導創建數據庫菜單:工具→向導→創建數據庫向導→……工具欄:一.
使用向導創建數據庫一.
使用向導創建數據庫一.
使用向導創建數據庫數據庫文件初始大小數據庫文件邏輯名稱物理文件名將默認為:邏輯文件名.MDF一.
使用向導創建數據庫按百分比增長:發生增長時文件大小百分比一.
使用向導創建數據庫事務日志文件初始大小事務日志文件邏輯名稱物理文件名將默認為:邏輯文件名.LDF一.
使用向導創建數據庫一.
使用向導創建數據庫二.使用“數據庫屬性”對話框創建數據庫菜單操作:右擊數據庫文件夾或在其下屬任一數據庫圖標,選擇“新建數據庫”選項。工具欄操作:二.
使用“數據庫屬性”創建數據庫單擊數據文件選項卡,設置其中的選項。在這里可以直接定義新的文件組二.
使用“數據庫屬性”創建數據庫單擊事務日志選項卡,設置其中的選項。三.使用T-SQL語句創建數據庫格式:CREATEDATABASE數據庫名稱[ON[<文件說明>[,...n]][,<文件組>[,...n]]][LOGON{<文件說明>[,...n]}]參數說明:數據庫名稱:新數據庫的名稱。ON關鍵字:其后的參數指定用來存儲數據庫數據的磁盤文件(數據文件)。<文件說明>:定義主文件組的數據文件。<文件組>:定義用戶文件組及其文件。LOGON:指定日志文件。其后的<文件說明>用以定義日志文件。如果沒有指定LOGON,將自動創建一個日志文件,該文件使用系統生成的名稱,大小為數據庫中所有數據文件總大小的25%。三.使用T-SQL語句創建數據庫<文件說明>和<文件組>進一步定義如下:<文件說明>::= [PRIMARY] ([NAME=邏輯文件名,] FILENAME='物理文件名' [,SIZE=初始大小] [,MAXSIZE={最大限制|UNLIMITED}] [,FILEGROWTH=增長量])[,...n] <文件組>::= FILEGROUP文件組名稱<文件說明>[,...n]三.使用T-SQL語句創建數據庫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】設已經在e盤建立了兩個文件夾:e:\sql_data和e:\sql_log,分別用來存放數據庫文件和事務日志文件,使用CREATEDATABASE語句創建一個company數據庫:三.使用T-SQL語句創建數據庫CREATEDATABASEcompany--創建數據庫ONPRIMARY--定義在主文件組上的文件( NAME=company_data,--邏輯名稱
FILENAME='e:\sql_data\company.mdf',--物理名稱
SIZE=10,--初始大小為10MB MAXSIZE=unlimited,--最大限制為無限大
FILEGROWTH=10%--增長速度為10%)LOGON--定義事務日志文件( NAME=company_log,--邏輯名稱
FILENAME='e:\sql_log\company.ldf',--物理名稱
SIZE=1,--初始大小為1MB MAXSIZE=5,--最大限制為5MB FILEGROWTH=1--增長速度為1MB)三.使用T-SQL語句創建數據庫練習8-1創建一個數據庫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】創建一個雇員信息數據庫,包含兩個數據文件和兩個事務日志文件。三.使用T-SQL語句創建數據庫CREATEDATABASEemployeesONPRIMARY--定義在主文件組上的文件( NAME=employee1,--主數據文件邏輯名稱
FILENAME='e:\sql_data\employee1.mdf',--物理名稱
SIZE=10,--主數據文件初始大小為10MB MAXSIZE=unlimited,--最大限制為無限大
FILEGROWTH=10%--增長速度為10%),( NAME=employee2,--次數據文件邏輯名稱
FILENAME='e:\sql_data\employee2.ndf',--物理名稱
SIZE=20,--次數據文件初始大小為20MB MAXSIZE=100,--次數據文件最大限制為100MB FILEGROWTH=1--次數據文件增長速度為1MB)三.使用T-SQL語句創建數據庫LOGON--定義事務日志文件( NAME=employeelog1,--事務日志文件邏輯名文件
FILENAME='e:\sql_log\employeelog1.ldf',--物理名稱
SIZE=10,--初始大小為50MB MAXSIZE=50,--最大限制為50MB FILEGROWTH=1--增長速度為1MB),( NAME=employeelog2,--事務日志邏輯文件名
FILENAME='e:\sql_log\employeelog2.ldf',--物理名稱
SIZE=10,--初始大小為10MB MAXSIZE=50,--最大限制為50MB FILEGROWTH=1--增長速度為1MB)三.使用T-SQL語句創建數據庫練習8-2創建一個只包含一個數據文件和一個日志文件的數據庫。該數據庫名為Sales,數據文件的邏輯名為Sales_data,數據文件的操作系統名為sales_data.mdf,初始大小為10MB,最大可增加至500MB,增幅為10%;日志文件的邏輯名為Sales_log,操作系統名為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】創建test數據庫,包含一個主文件組和兩個次文件組,每個文件組包含兩個文件。三.使用T-SQL語句創建數據庫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語句創建數據庫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語句創建數據庫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--定義事務日志文件( NAME='test_log', FILENAME='e:\sql_log\test_log.ldf', SIZE=5,MAXSIZE=25,FILEGROWTH=5)三.使用T-SQL語句創建數據庫練習2-3創建一個包含多個數據文件和日志文件的數據庫。該數據庫名為student,含有三個初始大小為10MB的數據文件和兩個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)練習8-4創建一個包含兩個文件組的數據庫。該數據庫名為business,主文件組包含business_dat1和business_dat2兩個數據文件。文件組business_group包含文件數據文件business_dat3。該數據庫還包含一個日志文件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)創建數據庫需要注意以下幾點:每個數據庫都有一個所有者,可以在該數據庫中執行某些特殊的活動,數據庫被創建之后,創建數據庫的用戶自動成為該數據庫的所有者。默認情況下,只有系統管理員和數據庫所有者可以創建數據庫,也可以授權其他用戶創建數據庫。在每個SQLServer實例下,最多只能創建32767個數據庫。所創建的數據庫名稱必須符合標識符的命名規則。要讓日志文件能夠發揮作用,通常將數據文件和日志文件存儲在不同的物理磁盤上。三.使用T-SQL語句創建數據庫執行CREATEDATABASE語句后,可以在企業管理器中查看創建數據庫的結果。方法是:
展開數據庫文件夾→右擊的數據庫→選擇“屬性”,打開數據庫屬性對話框,從各選項卡上可以查看所創建數據庫的各種屬性。8.2.2查看數據庫例如,test數據庫的屬性對話框:8.2.2查看數據庫用T-SQL語句查看數據庫的屬性使用系統存儲過程sp_helpdb可以查看某個數據庫或所有數據庫的屬性。格式:sp_helpdb
database_name
該存儲過程顯示了Sales數據庫的名稱、大小、所有者、創建日期以及數據文件和日志文件等屬性。例8-4查看數據庫Sales的屬性。
sp_helpdbSales例8-5查看所有數據庫的屬性
sp_helpdb
8.2.3修改數據庫創建數據庫之后,可以在企業管理器中利用數據庫屬性對話框直接修改創建時的某些設置,或修改創建時無法設置的屬性,也可以使用Transcat-SQL語言的ALTERDATABASE語句修改數據庫。一.使用企業管理器修改數據庫展開數據庫文件夾→右擊數據庫名稱→選擇“屬性”命令,打開數據庫屬性對話框。在該對話框上有多個選項卡,可以在各選項卡上查看或修改數據庫文件及其他屬性。一.使用企業管理器修改數據庫“數據庫屬性”對話框各選項說明如下:限制訪問:指定只有db_owner、dbcreator
或sysadmin
的成員的用戶才可以訪數據庫。單用戶:指定一次只能有一個用戶訪問數據庫。模型:指定數據庫的恢復模型類型。以確定如何備份數據以及能承受何種程度的數據丟失ANSINULL默認設置:指定將數據表列默認定義為NULL還是NOTNULL。當選擇此選項時,在CREATETABLE或ALTERTABLE語句過程中,沒有顯式定義為NOTNULL的列都將默認為允許空值。一.使用企業管理器修改數據庫遞歸觸發器:允許觸發器遞歸調用。SQLServer設定的觸發器遞歸調用的層數最多為32層。自動更新統計信息:指定在優化期間自動生成查詢優化所需的過時統計信息。殘缺頁檢測:允許自動檢測有損壞的頁。自動關閉:當數據庫中無用戶時,自動關閉該數據庫,并將所占用的資源交還給操作系統。自動收縮:允許定期對數據庫進行檢查,當數據庫文件或日志文件的未用空間超過其大小的25%時,系統將會自動縮減文件使其未用空間等于25%。一.使用企業管理器修改數據庫自動創建統計信息:指定在優化期間自動生成優化查詢所需的任何缺少的統計信息。使用被引用的標識符:指定SQLServer將強制執行關于引號的ANSI規則。選擇此選項指定雙引號只能用于標識符,比如列和表的名稱。字符串必須包含在單引號內。格式:ALTERDATABASE數據庫名稱{ADDFILE<文件說明>[,...n][TOFILEGROUP文件組名稱]|ADDLOGFILE<文件說明>[,...n]|REMOVEFILE邏輯文件名|ADDFILEGROUP文件組名稱|REMOVEFILEGROUP文件組名稱|MODIFYFILE<文件說明>|MODIFYNAME=新數據庫名|MODIFYFILEGROUP文件組名稱{文件組屬性|NAME=新文件組名稱}二.使用T-SQL語句修改數據庫參數說明:數據庫名稱:是要更改的數據庫的名稱。ADDFILE:指定要添加文件。該文件由后面的<文件說明>指定。<文件說明>定義如下:
<文件說明>::=(NAME=邏輯文件名
[,NEWNAME=新邏輯文件名][,FILENAME='物理文件名'][,SIZE=大小][,MAXSIZE={最大限制|UNLIMITED}][,FILEGROWTH=增長量])二.使用T-SQL語句修改數據庫TOFILEGROUP:表示要將指定的文件添加到其后指定的的文件組中。ADDLOGFILE:表示要將其后指定的日志文件添加到指定的數據庫中。REMOVEFILE:從數據庫系統表中刪除文件描述并刪除物理文件。ADDFILEGROUP:指定要添加文件組。REMOVEFILEGROUP:從數據庫中刪除文件組。只有當文件組為空時才能將其刪除。二.使用T-SQL語句修改數據庫MODIFYFILE:表示要更改指定的文件,可以更改文件名稱、大小、增長情況和最大限制。一次只能更改一種屬性。如果指定了SIZE,那么新的大小必須比文件當前大小還大。MODIFYNAME=新數據庫名:表示要重命名數據庫。MODIFYFILEGROUP文件組名稱{文件組屬性|NAME=新文件組名稱}:指定要修改的文件組和所需的改動。如果指定“文件組名稱”和“NAME=新文件組名稱”,則將此文件組的名稱改為新文件組名稱。如果指定“文件組名稱”和“文件組屬性”,則表示修改文件組的屬性。二.使用T-SQL語句修改數據庫“文件組屬性”的值有:READONLY——指定文件組為只讀。不允許更新其中的對象。主文件組不能設置為只讀。READWRITE——指定文件組為讀寫屬性。允許更新文件組中的對象。只有具有排它數據庫訪問權限的用戶才能將文件組標記為讀/寫。DEFAULT——將文件組指定為默認數據庫文件組。只能有一個數據庫文件組是默認的。二.使用T-SQL語句修改數據庫二.使用T-SQL語句修改數據庫【例8-6】添加一個事務日志文件到employees數據庫中。ALTERDATABASEemployeesADDLOGFILE--添加日志文件(NAME=employeelog3,FILENAME='e:\sql_log\employeelog3.ldf',SIZE=1,MAXSIZE=50,FILEGROWTH=1)二.使用T-SQL語句修改數據庫【例8-7】添加一個包含兩個數據文件的文件組到employees數據庫中。二.使用T-SQL語句修改數據庫
ALTERDATABASEemployees ADDFILEGROUPdata1--添加文件組data1ALTERDATABASEemployeesADDFILE--添加數據文件
(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--將以上兩個文件添加到data1文件組MODIFYFILEGROUPfilegroup_name{filegroup_property
|NAME=new_filegroup_name}:修改某一文件組的屬性。練習8-7為數據庫sample添加一個數據文件sample_dat2和一個日志文件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)練習8-8為數據庫sample添加一個文件組USER1,并向該文件組添加一個二個數據文件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中添加到數據庫employees中的一個數據文件employee4。
ALTERDATABASEemployees REMOVEFILEemployee4二.使用T-SQL語句修改數據庫練習8-9從數據庫sample中刪除文件sampuser_dat2。ALTERDATABASEsampleREMOVEFILEsampuser_dat2練習8-10刪除數據庫sample中的文件組USER1。ALTERDATABASEsampleREMOVEFILEsampuser_dat1ALTERDATABASEsampleREMOVEFILEGROUPUSER1注意:在刪除文件組時必須先刪除文件組中所包含的文件。
【例8-9】給添加到數據庫employees中的文件。employee3增加大小。
ALTERDATABASEemployees MODIFYFILE (NAME=employee3, SIZE=5MB)二.使用T-SQL語句修改數據庫練習8-11修改數據庫sample中數據文件sample_dat2的屬性,將其初始大小改為10MB,最大容量改為80MB,增長幅度改為5MB。ALTERDATABASEsampleMODIFFILE(NAME=sample_dat2,SIZE=10,MAXSIZE=80,FILEGROWTH=5)【例8-10】將數據庫文件名employees修改成MyEmployeesALTERDATABASEemployeesMODIFYNAME=MyEmployees二.使用T-SQL語句修改數據庫練習8-12修改數據庫business中文件組business_group的屬性,將其改名為group1,并設置為DEFAULT屬性(即該文件組為默認文件組)。ALTERDATABASEbusinessMODIFYFILEGROUPbusiness_groupNAME=group1ALTERDATABASEbusinessMODIFYFILEGROUPgroup1DEFAULT練習8-13將數據庫student改名為stud_teacher。ALTERDATABASEstudentMODIFYNAME=stud_teacher
重命名數據庫語法形式為:sp_renamedb‘old_name’,’new_name’old_name:數據庫的當前名稱;new_name是數據庫的新名稱。練習8-14將數據庫business更名為company。
sp_renamedb'business','company
8.2.4刪除數據庫對于不再使用的數據庫,可以刪除它們以釋放所占用的磁盤空間。可以在企業管理器中刪除數據庫,也可以使用DROPDATABASE語句刪除數據庫。一.使用企業管理器刪除數據庫快捷菜單操作:右擊所要數據庫名稱→選擇“刪除”命令工具欄操作:單擊數據庫名稱→使用按鈕彈出對話框如下圖。二.使用T-SQL語句刪除數據庫格式:
DROPDATABASE數據庫名稱[,…n]【例8-11】刪除創建的數據庫company。
DROPDATABASEcompany顯示結果為:
正在刪除數據庫文件'e:\sql_log\company.ldf'。正在刪除數據庫文件'e:\sql_data\company.mdf'。注意:如果數據庫當前正在使用,則無法刪除該數據庫。8.3備份數據庫在數據庫的使用過程中,難免會由于病毒、人為失誤、機器故障等原因造成數據的丟失或損壞。數據對于一個企業、政府部門來說往往是非常重要的,一旦出現問題,造成的損失是巨大的。為了保證數據庫的安全性,防止數據庫中數據的意外丟失,應經常對數據庫中的數據進行備份,以便在數據庫出故障的時候進行及時有效的恢復。4.3.1備份概述備份內容系統數據庫用戶數據庫事務日志備份方式(備份類型)完全數據庫備份差異數據庫備份事務日志備份數據庫文件和文件組備份8.3.1備份概述1.完全數據庫備份
備份數據庫的所有表的數據及模式,以及對應的文件結構,包括對事務日志中的事務進行備份。2.差異數據庫備份
只記錄自上次完全數據庫備份后發生更改的數據。差異備份的數據量比完全備份小而且備份速度快,因此可以更經常地備份,經常備份將減少丟失數據的危險。8.3.1備份概述3.事務日志備份
事務日志是自上次備份事務日志后對數據庫執行的所有事務的一系列記錄。事務日志備份只考慮在日志中所記錄的變化,是基于邏輯操作的備份。可以使用事務日志備份將數據庫恢復到特定的即時點或恢復到故障點。4.數據庫文件和文件組備份
只備份特定的文件或文件組,常用于超大型數據庫的備份。8.3.2創建和刪除備份設備磁盤備份設備:指硬盤或其它磁盤存儲介質上的文件,與常規操作系統文件一樣。可以在本地服務器的磁盤上或遠程共享磁盤上定義磁盤備份設備。磁帶備份設備:磁帶設備只能物理連接到運行SQLServer實例的計算機上。SQLServer不支持備份到遠程磁帶設備上。在進行備份以前一般要指定或創建備份設備,備份設備是用來存儲數據庫、事務日志或文件和文件組備份的存儲介質。包括磁盤和磁帶設備。8.3.2創建和刪除備份設備物理設備名稱:是操作系統用來標識備份設備的名稱,如“D:\MyBackups\Student.bak”。邏輯設備名稱:是用來標識物理備份設備的別名或公用名稱,用以簡化物理設備名稱。例如,邏輯設備名稱可以是“STDBackup”,而物理設備名稱則是“D:\MyBackups\Student.bak”。
SQLServer使用物理設備名稱或邏輯設備名稱來標識備份設備。8.3.2創建和刪除備份設備1.使用企業管理器創建設備
選擇服務器→展開“管理”文件夾→右擊“備份”→選擇“新建備份設備”命令8.3.2創建和刪除備份設備打開“備份設備屬性”對話框:邏輯備份設備名稱物理備份設備名稱8.3.2創建和刪除備份設備2.使用企業管理器刪除備份設備
創建備份設備后,在企業管理器的右側窗格中會顯示該備份設備的名稱、物理位置和設備類型,用鼠標右擊要刪除的備份設備的名稱,從彈出的快捷菜單中選擇“刪除”命令,則可以刪除相應的備份設備。8.3.2創建和刪除備份設備3.使用系統存儲過程創建備份設備格式:sp_addumpdevice[@devtype=]'設備類型',[@logicalname=]'邏輯備份設備名',[@physicalname=]'物理備份設備名'參數說明:[@devtype=]‘設備類型’:指定備份設備的類型,可以是:disk、pipe、tape。[@logicalname=]'邏輯備份設備名':指定邏輯備份設備名稱。8.3.2創建和刪除備份設備[@physicalname=]'物理備份設備名':指定物理備份設備名。物理名稱必須遵照操作系統文件名稱的規則或者網絡設備的通用命名規則,并且必須包括完整的路徑。對于遠程硬盤文件,可以使用格式“\\主機名\共享路徑名\路徑名\文件名\”表示;對于磁帶設備,用“\\.\TAPEn”表示,其中n為磁帶驅動器序列號。8.3.2創建和刪除備份設備【例8-9】創建磁盤一個備份設備,邏輯名稱為“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表示執行存儲過程。8.3.2創建和刪除備份設備【例8-12】創建備份設備copy2,使用teacher服務器共享文件夾backup下的文件company1.bak。
EXECsp_addumpdevice
'disk','copy2','\\teacher\backup\company1.bak'【例8-13】用物理設備\\.\TAPE0創建一個磁帶備份設備tapedevice。
EXECsp_addumpdevice
'tape','tapedevice','\\.\TAPE0'8.3.2創建和刪除備份設備4.使用系統存儲過程sp_dropdevice刪除備份設備格式:
sp_dropdevice
[@logicalname=]'邏輯備份設備名'[,[@delfile=]'刪除文件']參數說明:
@delfile:指是否同時刪除物理備份文件。如果該參數指定為DELFILE,那么就會刪除設備物理文件名指定的磁盤文件。8.3.2創建和刪除備份設備【例8-14】刪除例8-11創建的備份設備tapedevice,不刪除相應的物理備份文件。
EXECsp_dropdevice'tapedevice'【例8-15】刪除例8-9創建的備份設備copy1,并刪除相應的物理文件。
EXECsp_dropdevice'copy1','DELFILE'8.3.3執行備份(1)打開備份數據庫話框方法一:右擊數據庫→選擇“所有任務”→選擇“備份數據庫”令方法二:展開“數據庫”文件夾→展開“管理”文件夾→右擊“備份”→選擇“備份數據庫”方法三:打開“工具”菜單→選擇“備份數據庫”1.在企業管理器中使用備份數據庫對話框執行備份8.3.3執行備份8.3.3執行備份8.3.3執行備份2.在企業管理器中使用備份向導執行備份(1)單擊服務器
→
打開“工具”菜單→選擇“向導”或單擊
工具欄圖標
打開“選擇向導”對話框:8.3.3執行備份(2)選擇數據庫:8.3.3執行備份(3)輸入備份名稱和描述信息:8.3.3執行備份(4)選擇備份類型:8.3.3執行備份(5)選擇備份設備和屬性:8.3.3執行備份(6)備份驗證和調度:8.3.3執行備份(7)完成備份:8.3.3執行備份(1)完全數據庫備份格式:
BACKUPDATABASE數據庫名稱
TO<備份設備>[,...n][WITH[NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]3.使用BACKUPDATABASE語句備份數據庫8.3.3執行備份說明:<備份設備>:指定備份要使用的邏輯或物理備份設備。定義如下:
<備份設備>::={邏輯備份設備名}|{DISK|=TAPE}'物理備份設備名'INIT:指定應重寫所有備份集。NOINIT:表示備份集將追加到指定的設備現有數據之后,以保留現有的備份集。完全數據庫備份是制作數據庫中所有內容的一個副本,備份過程花費時間相對較長,備份占用的空間大,因此不宜頻繁進行。8.3.3執行備份【例8-16】將“學生管理”數據庫備份到d盤的mybackup文件夾下的“學生管理.bak”文件中。
--首先先創建一個備份設備
sp_addumpdevice'disk','mycopy1','d:\mybackup\學生管理.bak'--用BACKUPDATABASE備份學生管理數據庫
BACKUPDATABASE學生管理
TOmycopy1WITHNAME='學生管理備份',DESCRIPTION='完全備份'8.3.3執行備份【例8-15】將“學生管理”數據庫備份到網絡中的另一臺主機ServerX上。
sp_addumpdevice
'disk','STDcopy','\\ServerX\backup\student.dat'BACKUPDATABASE學生管理TOSTDcopy8.3.3執行備份(2)差異數據庫備份指對最近一次完全數據庫備份結束以來發生改變的數據進行備份。當數據庫從上次備份以來只修改了很少的數據時,適合使用差異備份。格式:
BACKUPDATABASE數據庫名稱
TO<備份設備>[,...n]WITH
DIFFERENTIAL[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]8.3.3執行備份【例8-16】假設對“學生管理”數據庫進行了一些修改,現在要做一個差異備份,且將該備份添加到例8-14的現有備份之后。
BACKUPDATABASE學生管理
TOmycopy1WITHDIFFERENTIAL,NOINIT,NAME='學生管理備份',DESCRIPTION='第一次差異備份'8.3.3執行備份(3)文件或文件組備份當一個數據庫很大時,對整個數據庫進行備份可能會花費很多時間,這時可以采用文件或文件組備份,即對數據庫中的部分文件或文件組進行備份。8.3.3執行備份格式:
BACKUPDATABASE數據庫名稱
<文件或文件組>[,...n]TO<備份設備>[,...n][WITHDIFFERENTIAL[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]<文件或文件組>::={FILE=邏輯文件名|FILEGROUP=邏輯文件組名}8.3.3執行備份【例8-17】將test數據庫的grp1_file1文件備份到文件“E:\temp\grp1_file1.dat”中。
BACKUPDATABASEtestFILE='grp1_file1'TODISK='E:\temp\grp1_file1.dat'【例8-18】將test數據庫的文件組grp1備份到文件“E:\temp\group1.dat”中。
BACKUPDATABASEtestFILEGROUP='grp1'TODISK='E:\temp\group1.dat'WITHNAME='groupbackupoftest'8.3.3執行備份(4)事務日志備份事務日志是自上次備份事務日志后對數據庫執行的所有事務的一系列記錄,備份事務日志將對最近一次備份事務日志以來的所有事務日志進行備份。格式:
BACKUPLOG數據庫名稱
TO<備份設備>[,...n][WITH[[,]NAME=備份集名稱][[,]DESCRIPTION='備份描述文本'][[,]{INIT|NOINIT}]]8.3.3執行備份【例8-19】將“學生管理”數據庫的日志文件備份到文件“e:\temp\MyLog1.bak”中。
EXECsp_addumpdevice'disk','MyLog1','e:\temp\MyLog1.bak'BACKUPLOG學生管理TOMyLog18.3.4還原數據庫數據庫備份后,一旦系統發生崩潰或者執行了錯誤的數據庫操作,就可以從備份文件中恢復(還原)數據庫,讓數據庫回到備份時的狀態。通常在以下情況下需要恢復數據庫。媒體故障。用戶操作錯誤。服務器永久丟失。將數據庫從一臺服務器復制到另一臺服務器。恢復數據庫之前,需要限制其他用戶訪問數據庫:右擊數據庫→選擇“屬性”→選擇“選項”→選擇“限制訪問”、單用戶8.3.4還原數據庫恢復內容:恢復整個數據庫恢復部分數據庫恢復數據庫文件或文件組恢復數據庫事務日志恢復途徑:使用企業管理器中使用RESTOREDATABASE8.3.4還原數據庫1.使用企業管理器恢復數據庫單擊服務器名稱→選擇“工具”菜單→選擇“還原數據庫”或右擊“數據庫”或數據庫名稱→選擇“所有任務”→選擇“還原數據庫”命令。兩種方法都會打開“還原數據庫”對話框:8.3.4還原數據庫“還原數據庫”對話框——“常規”選項卡8.3.4還原數據庫“還原數據庫”對話框——“選項”選項卡8.3.4還原數據庫2.使用RESTOREDATABASE語句恢復數據庫(1)恢復完全備份數據庫和差異備份數據庫格式:
RESTOREDATABASE數據庫名稱
[FROM<備份設備>[,...n]][WITH[[,]FILE=文件號]
[[,]MOVE'邏輯文件名'TO'物理文件名'][,...n][[,]{NORECOVERY|RECOVERY}][[,]REPLACE]]8.3.4還原數據庫說明:文件號:要還原的備份集。例如,文件號為2表示第二個備份集。NORECOVERY:指示還原操作不回滾任何未提交的事務。當還原數據庫備份和多個事務日志時,或在需要使用多個RESTORE語句時(例如在完整數據庫備份后進行差異數據庫備份),SQLServer要求在除最后的RESTORE語句外的所有其它語句上使用WITHNORECOVERY選項。RECOVERY:指示還原操作回滾任何未提交的事務。在恢復完成后即可隨時使用數據庫。REPLACE:指定如果存在同名數據庫,將覆蓋現有的數據庫。8.3.4還原數據庫【例8-20】設在E盤temp文件夾下有一個職工數據庫的完全備份文件“職工.bak”,恢復該數據庫,將恢復后的數據庫名稱改為“職工信息”。如果當前服務器中存在“職工信息”數據庫,則覆蓋該數據庫。方法一:使用備份設備。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還原數據庫方法二:直接指定磁盤文件名
RESTOREDATABASE職工信息
FROMDISK='E:\temp\職工.bak'WITHMOVE'職工_data'TO'e:\sql_data\職工信息.mdf',MOVE'職工_log'TO'e:\sql_log\職工信息.lgf',REPLACE8.3.4還原數據庫【例8-21】設第一天做了一個“學生管理”數據庫的完全備份,第2天做了一個“學生管理”數據庫的差異備份,之后數據庫出現故障,將數據庫恢復到做差異備份時的狀態。8.3.4還原數據庫
--恢復完全備份
RESTOREDATABASE學生管理
FROMmycopy1WITHFILE=1,NORECOVERY --這時數據庫無法使用,繼續恢復差異備份
RESTOREDATABASE學生管理
FROMmycopy1WITHFILE=2,RECOVERY
--這時數據庫可以使用8.3.4還原數據庫(2)恢復事務日志格式:
RESTORELOG數據庫名稱
[FROM<備份設備>[,...n]][WITH[[,]FILE=文件號]
[[,]MOVE'邏輯文件名'TO'物理文件名'][,...n][[,]{NORECOVERY|RECOVERY}]]8.3.4還原數據庫【例8-22】假設對“學生管理”數據庫先后做了完全數據庫備份、差異數據庫備份和事務日志備份現在利用這三個備份來恢復數據庫。
--恢復完全備份
RESTOREDATABASE學生管理
FROMmycopy1WITHFILE=1,NORECOVERY8.3.4還原數據庫--這時數據庫無法使用,繼續恢復差異備份RESTOREDATABASE學生管理FROMmycopy1WITHFILE=2,NORECOVERY--這時數據庫仍然無法使用,繼續恢復事務日志備份RESTORELOG學生管理FROMMylog1WITHRECOVERY
--完成恢復,數據庫可以使用利用數據庫的維護計劃向導可以方便地設置數據庫的核心維護任務,以便于定期地執行這些任務8.4維護數據庫8.5數據的導入導出導入導出數據方法概述DTS概述DTS導出向導DTS導入向導在使用SQLServer的過程中,經常需要將其他應用程序(例如Access數據庫或ASCII文本文件)的數據移植到SQLServer2000數據庫中,或者將SQLServer2000的數據移植到其他數據庫中。這種在SQLServer2000和其他應用程序之間的數據轉換,就是本章中將要介紹的導入導出數據。8.5.1導入導出數據方法概述導入/導出數據的可以有以下幾種方法:使用數據轉換服務(DataTransformationServices,DTS)導入/導出向導或DTS設計器創建可用于導入/導出和轉換數據的DTS包。使用SQLServer復制技術在整個企業內分發數據。SQLServer中的復制技術可以制作數據復本,將這些復本移到不同位置,以及自動同步數據,從而使所有復本都具有相同的數據值。可以在同一服務器或通過LAN、WAN或Internet連接的不同服務器上的數據庫之間執行復制。8.5.1導入導出數據方法概述使用bcp命令提示實用工具在SQLServer實例和數據文件之間導入和導出數據。從某個OLEDB提供程序中選擇數據,并將數據從外部數據源復制到SQLServer實例。使用分布式查詢從另一個數據源中選擇數據并指定要插入的數據。使用INSERT語句將數據添加到現有表中。使用BULKINSERT語句將數據從數據文件導入到SQLServer實例。使用SELECTINTO語句根據現有表創建新表。1.DTS連接數據源連接:包括連接到標準數據庫(如SQLServer、Access、Oracle、dBase和Paradox等)、與ODBC數據源的OLEDB連接、Excel電子表格數據、HTML源以及其他OLEDB提供程序。文件連接:DTS對文本文件提供額外的支持。指定文本文件連接時,需要指定文件的格式。例如,文本文件是分隔字段格式還是固定字段格式、文本文件是Unicode格式還是ANSI格式、行分隔符和列分隔符、文本限定符以及第一行是否包含列名等。數據鏈接連接:在這些連接中,SQLServer外部的中間文件存儲連接字符串。2.DTS任務導入和導出數據轉換數據復制數據庫對象將消息發送到其他用戶和包以及從其他用戶和包接收消息對數據源執行一組Transact-SQL語句或ActiveX腳本。3.DTS轉換DTS轉換是在數據到達目的之前應用于一塊數據的一個或多個函數或操作。源數據未改變。例如,可以從源數據的一列中析取一個子串并將其復制到目的表。這個特定的子串函數是映射到源列的轉換。也可以使用某些特性搜索行并只對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025綠化苗木采購合同樣本
- 股票出貨協議書范本
- 2025年03月浙江臺州市玉環市事業單位公開招聘工作人員74人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年03月廣東深圳市光明區統計局公開招聘(選聘)專干4人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年03月國家衛生健康委統計信息中心應屆畢業生公開招聘1人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 物理試題2025年東北三省四城市聯考暨沈陽市高三質量監測(二)及答案
- 重慶五一職業技術學院《俄漢互譯口譯》2023-2024學年第二學期期末試卷
- 戶用和村用風光互補發電系統控制器及逆變器項目安全風險評價報告
- 湖南幼兒師范高等專科學校《BIM協同設計》2023-2024學年第一學期期末試卷
- 成都工貿職業技術學院《基礎化學實驗二》2023-2024學年第二學期期末試卷
- 六年級下冊數學教案-比例 西師大版
- 抗日英雄人物楊靖宇介紹
- AI驅動的可持續能源發展
- 整本書閱讀《林海雪原》【知識精研】六年級語文下冊 (統編版五四制2024)
- 健康日用品設計與研發趨勢
- 【化學】常見的鹽(第1課時)-2024-2025學年九年級化學下冊(人教版2024)
- 新人教版初中英語七至九年級全部課本單詞
- 宜賓市新能源產業有限公司招聘筆試沖刺題2025
- 數字化背景下國有企業財會監督體系的構建與實踐創新
- 龍游經濟開發區下屬國資公司招聘筆試沖刺題2025
- 《海上風電設備運輸規范》
評論
0/150
提交評論