繼續上一篇內容 SQL Server 資料庫基本記錄(一)
資料庫使用者管理
- 登入名 用於連線到 SQL Server 伺服器(不一定能對資料庫內容執行操作)
- 資料庫使用者名稱
- SQL Server 的使用者
- 每個用來登入 SQL Server 的賬號都是一個使用者
- 同一個資料庫可以擁有多個使用者,同一個使用者也可以同時訪問多個資料庫
- 建立登入名和為使用者賦予操作許可權
- 建立登入名
CREATE LOGIN <登入名> WITH PASSWORD=<'密碼'>
複製程式碼
- 建立資料庫使用者
CREATE USER 資料庫使用者 FOR LOGIN=登入名
複製程式碼
- 為資料庫使用者賦予許可權
GRANT 操作許可權 ON 表名 TO 使用者名稱
複製程式碼
- 角色:事先定義好的一組許可權,資料庫伺服器方面的控制許可權:伺服器角色 -- 例如建立、修改、刪除資料庫、管理磁碟檔案、新增或刪除資料庫連線等 -- 伺服器級別的物件,只能包含登入名
- 資料庫的所有者:abo -- 每個資料庫中都存在 -- 登入名 sa 自動對映為資料庫使用者 abo
角色名 | 描述 |
---|---|
bulkadmin | 執行 bulk 語句,可將文字檔案內的資料匯入到 SQL Server 2008 中 |
dbcreator | 建立、更改、刪除和還原任何資料庫 |
diskadmin | 管理磁碟檔案 |
processadmin | 管理 SQL Server 中執行的程式 |
securityadmin | 管理和稽核登入賬戶 |
serveradmin | 設定伺服器範圍的配置 |
setupadmin | 新增和刪除連線伺服器,並執行沒某些系統儲存過程 |
sysadmin | 可在伺服器引擎中執行任何活動 |
public | 兩大特點:1. 初始狀態時沒有許可權 2. 所有資料庫使用者都是它的成員 |
- 角色:事先定義好的一組許可權,資料庫中資料的控制許可權:資料庫使用者角色 -- 資料庫級別的一個物件,只能包含資料庫使用者名稱 -- 例如可訪問哪個資料庫,可訪問哪個資料庫中的哪些資料表,哪些檢視等 -- 對哪些資料表執行哪些操作,比如是插入操作還是更新操作
- 固定資料庫角色 -- 一組 SQL Server 預定義的資料庫角色 -- 具有資料庫級別的管理許可權
- 自定義資料庫角色 -- 當固定資料庫角色不能滿足需求時,可自定義資料庫角色
角色名 | 描述 |
---|---|
db_owner | 執行所有的配置活動和維護活動,以及授予或取消資料庫物件上的 select,insert,update |
db_accessadmin | Windows 登入賬戶 |
db_datawriter | 向來自資料庫中的所有使用者表新增、更新、刪除資料 |
db_datareader | 讀取資料庫中所有使用者表中的資料 |
db_ddladmin | 執行任何資料庫語言命令 |
db_securityadmin | 管理資料庫安全,可修改角色成員身份和管理許可權 |
db_backupoperator | 可備份資料庫 |
db_denydatareader | 不能檢視資料庫中使用者表的任何資料 |
db_denydatawriter | 不能向使用者表中新增、更新或刪除任何資料 |
public | 特殊的固定資料庫使用者,每個資料庫使用者都屬於 public 資料角色 |
public 資料庫角色的特點:
- 捕獲資料庫中使用者的預設許可權
- 所有使用者、角色或組預設屬於 public
- 無法將使用者、組或角色指派給它,因為預設情況下它屬於該角色
- 不能被刪除
資料庫的維護
資料庫狀態
- 兩種狀態
- online:可對資料庫進行訪問
- offline:資料庫無法使用
- 檢視資料庫狀態的方法
- 使用查詢語句
SELECT state_desc FROM sys.databases WHERE NAME = 'E_Market'
複製程式碼
**E.g:**
複製程式碼
- 使用函式查詢
SELECT DATABASEPROPERTYEX('E_Market', 'status')
複製程式碼
**E.g:**
複製程式碼
- online (聯機) -- 資料庫處在可操作,可查詢狀態
- offline (離線) -- 斷開資料庫跟所有使用者的連線 -- 資料庫名在資料庫節點中存在 -- 不能執行任何有效的資料庫操作
分離和附加資料庫
- 分離資料庫
EXEC sp_detach_db @dbname=E_Market
複製程式碼
- 附加資料庫
EXEC sp_detach_db @dbname=E_Market,
@filename1='F:\Project\E_Market_data.mdf', -- 主檔案
@filename2='F:\Project\E_Market_log.ldf' -- 日誌檔案
複製程式碼
> E_Market 均為資料名
複製程式碼
- 離線和分離資料庫的異同點
- 不同點: -- 離線:與資料庫斷開連線,但資料庫節點還存在離線資料庫名稱 -- 分離:將資料庫從伺服器上分離出去,資料庫不存在,只存在對應的資料檔案和日誌檔案
- 相同點:都可對資料庫檔案進行復制等操作
收縮資料庫
- 刪除資料庫的每個檔案中已分配但還未使用的頁
- 收縮後資料庫空間自動減少
SQL Server 提供的備份方式
- 完整備份:備份整個資料庫的所有內容包括事物日誌
- 差異備份:只備份上次 完整備份 後更改過的資料部分
- 事務日誌備份:至備份事物日誌裡的內容
- 檔案或檔案組備份:只備份檔案或檔案組中的某些檔案
在資料庫完整備份期間,SQL Server 做以下工作
- 備份資料及資料庫中所有表的結構和相關的檔案結構
- 備份在備份期間發生的所有活動
- 備份在事物日誌中為確認的事物
差異備份:
- 是完整備份的補充
- 備份上次完整備份後,資料變動的部分