300 likes | 509 Views
資料庫系統概論 CH06 資料庫的處理. 鄧姚文. 大綱. 資料庫與檔案的關係 資料庫其它相關處理. 6-1 資料庫與檔案的關係 資料庫使用的檔案. 兩個類型及三個副檔名 三個副檔名 . mdf 主要 . ndf 次要 . ldf 交易紀錄( log ) 一個資料庫至少會有 . mdf 及 . ldf 檔案 兩個類型 資料庫檔案 交易記錄檔. SQL Server 資料庫三種檔案類型. 主要資料檔 . mdf 主要資料檔是資料庫的起點 指到資料庫中的其他檔案 每個資料庫都有一個主要資料檔案 次要資料檔 . ndf
E N D
大綱 資料庫與檔案的關係 資料庫其它相關處理
6-1資料庫與檔案的關係資料庫使用的檔案 • 兩個類型及三個副檔名 • 三個副檔名 • .mdf主要 • .ndf次要 • .ldf交易紀錄(log) • 一個資料庫至少會有.mdf及.ldf檔案 • 兩個類型 • 資料庫檔案 • 交易記錄檔
SQL Server 資料庫三種檔案類型 • 主要資料檔 .mdf • 主要資料檔是資料庫的起點 • 指到資料庫中的其他檔案 • 每個資料庫都有一個主要資料檔案 • 次要資料檔 .ndf • 次要資料檔是由主要資料檔以外的所有資料檔所組成 • 有些資料庫可能不包含任何次要資料檔 • 有些則擁有數個次要資料檔 • 記錄檔 .ldf • 記錄檔中保存可用來復原資料庫的所有記錄資訊 • 每一個資料庫至少要有一個記錄檔 • 也可以有多個記錄檔
6-1資料庫與檔案的關係加入檔案至資料庫 ALTER DATABASE DaShang ADD FILE ( NAME=Da, FILENAME='D:\DATA\Da.ndf', SIZE=5MB, MAXSIZE=100MB, FILEGROWTH=5MB) • 加入檔案 • 一個資料庫可擁有多個檔案 • SQLServer會將資料平均寫入至多個檔案
6-1資料庫與檔案的關係檔案及檔案群組 • PRIMARY是SQL Server為每一資料庫配置的預設檔案群組 • 一個資料庫可使用多個檔案及檔案群組 • 檔案群組對於SQL Server的意義: • 比例填滿原則 • 依照各檔案的大小,依比例平均寫入資料 • 交易記錄檔 • 不可放在群組內,必須單獨存在 • 含有資料庫的變更記錄,對交易記錄檔的存取動作比資料檔更為頻繁
6-2資料庫其他相關處理關於系統資料庫 • master • 最重要的系統資料庫 • 記錄SQL Server伺服器層級的相關資訊 • msdb • 記錄Management Studio及Agent啟動時的必要資訊 • 資料庫的備份及還原記錄 • model-範本資料庫 • tempdb-保存暫存物件 • 重新啟動SQL Server,會以model資料庫為範本,重新建立tempdb資料庫
6-2資料庫其他相關處理卸離及附加 • 卸離表示將資料庫完整地自SQL Server伺服器移除 • 保留所有資料檔及交易記錄檔 • 卸離的目的通常是在不同SQL Server伺服器間移動資料庫
6-2資料庫其他相關處理離線及線上工作 • 離線之後,資料庫圖示會顯示不同符號 • 離線之後的資料庫只可使用少數工作 • 無法更改資料庫所含物件
6-2資料庫其他相關處理壓縮資料庫 • 可以適度縮小資料庫佔用空間 • 對象可以是資料庫或檔案
6-2資料庫其他相關處理產生指令碼 • 指令碼就是T-SQL語法 • 三個啟動位置
6-2資料庫其他相關處理匯入及匯出 • 來源及目的端的資料庫可以是任何SQL Server 2008支援的檔案格式 • 指定來源及目的位置 • 指定匯出入來源物件
6-2資料庫其他相關處理重要資料庫選項 • 資料庫屬性的「選項」 • 自動選項 • 限制存取 • 資料庫連線
6-2資料庫其他相關處理重要資料庫選項 在T-SQL中取得工作狀態-表6-2 在T-SQL中取得工作狀態-表6-3
SET ANSI_NULLS ON • 不能 SET ANSI_NULLS OFF • NULL 不能比較 • SELECT … FROM … WHERE FIELD= NULL • 必須寫成 • SELECT … FROM … WHERE FIELDIS NULL
SET QUOTED_IDENTIFIER ON 用雙引號分隔識別碼 文字用單引號分隔
SET QUOTED_IDENTIFIER OFF GO -- 以保留字為資料表與欄位命名 -- 應該不會過關 CREATE TABLE "select" ( "identity" INT IDENTITY NOT NULL, "order" INT NOT NULL ); GO SET QUOTED_IDENTIFIER ON; GO -- 這下應該過關了 CREATE TABLE "select" ( "identity" INT IDENTITY NOT NULL, "order" INT NOT NULL ); GO SELECT "identity","order" FROM "select" ORDER BY "order"; GO DROP TABLE "SELECT"; GO SET QUOTED_IDENTIFIER OFF; GO
SET NOCOUNT ON 當 SET NOCOUNT 是 ON 時,不會傳回計數 當 SET NOCOUNT 是 OFF 時,會傳回計數 即使 SET NOCOUNT 是 ON,也會更新 @@ROWCOUNT
USE AdventureWorks2008R2; GO SET NOCOUNT OFF; GO -- Display the count message. SELECT TOP(5)LastName FROM Person.Person WHERE LastName LIKE 'A%'; GO -- No longer display the count message. SET NOCOUNT ON; GO SELECT TOP(5) LastName FROM Person.Person WHERE LastName LIKE 'A%'; GO -- Reset SET NOCOUNT to OFF SET NOCOUNT OFF; GO
SET SHOWPLAN_ALL • SET SHOWPLAN_ALL 的設定是在執行階段進行設定,而不是在剖析階段進行設定。 • 當 SET SHOWPLAN_ALL 是 ON 時 • 傳回所有後續 Transact-SQL 陳述式的相關資訊 • 並不實際執行 Transact-SQL 陳述式
http://msdn.microsoft.com/zh-tw/library/ms187735%28v=sql.105%29.aspxhttp://msdn.microsoft.com/zh-tw/library/ms187735%28v=sql.105%29.aspx