[鐵人賽][Denali 新特性探險23]Contained Databases(1)
概述
Contained Database主要解決以往資料庫轉移到另外一台Server問題。
以前當我們使用Backup and Restore(or detach and attach) Database到另外一台Server,
可能還需要額外的處理後整個轉移才算完成,而這些操作好比資料庫相關設定、角色管理(或其他安全性物件,
最常見就是處理登入使用者問題)對應…等,
轉移過程中可能會因為忘了某個設定或角色權限對應而導致無法正常使用(相當不方便又麻煩),
現在,當你選用 Denali並啟用 Contained Database後,你再也不用擔心上述問題,
因為Contained Database包含資料庫所有設定和相關必須metadata,
且切割資料庫和SQL Server Instance(From Database Engine)、TempDB之間的關聯性,
方便使用者轉移到另一台Server,下面我將簡單操作如何啟用 Contained Database。
1. 啟用 Contained Database
Using TSQL
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'contained database authentication',1
reconfigure
go
select * from sys.configurations
where name='contained database authentication'
1:啟用。
0:停用。
Using SSMS
2. 建立資料庫內含項目類型=部分
Using TSQL
create database MyContainedDB
containment=partial
on
(
name='MyContainedDB',filename='D:\sqldata\MyContainedDB.mdf',size=100mb,maxsize=500mb,filegrowth=10mb
)
log on
(
name='MyContainedDB_log',filename='D:\sqldata\MyContainedDB_log.ldf',size=100mb,maxsize=500mb,filegrowth=10mb
)
Using SSMS
3. 建立SQL user with password
使用者類型選擇SQL user with password。
角色選擇 db_owner 。
4.連接DataBase Engine 測試
選擇SQL Server驗證並輸入帳號和密碼。
資料庫選擇MyContainedDB。
連接Database Engine成功。
可以看到使用MycontainedUser連接Database Engine後,
只能存取MycontainedDB,其餘資料庫不僅無法存取,
甚至更本無法檢視其他資料庫。
MyContainedUser在登入中不存在。