[鐵人賽][Denali 新特性探險24]Contained Databases(2)
在上一篇我大概介紹了Contained Database特性及如何啟用,
這篇我將實作Contained Database轉移到另一台SQL Server Instance過程。
我先在資料庫建立一些物件
--建立資料表
create table tbl_A
(
c1 int ,
c2 varchar(10)
)
go
insert into tbl_A select 1,'rico'
go
--建立預存程序
create proc usp_getdata
as
select * from tbl_A
go
--建立檢視表
create view uv_getsum
as
select sum(1) over (partition by c2 order by c1) as '總量'
from tbl_A
go
--建立純量值函式
create function ufun_getcount()
returns int
as
begin
declare @total int;
select @total=count(1) from tbl_A
return @total;
end
轉移Contained Database到另一台SQL Server Instance
1. 備份來源端(Server A) ContaidedDB
backup database MyContainedDB
to disk= 'D:\sqlbackup\MyContainedDB.bak'
備份成功。
2. 還原MyContaidedDB到 目的端(ServerB)
注意:
如果目的端SQL Server Instance未啟用自主資料庫驗證,
當你執行還原資料庫操作時,你將得到還原失敗的錯誤訊息(如下圖)
還原失敗。
啟用自主資料庫驗證
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'
再次執行還原
restore database MyContainedDB
from disk='D:\sqlbk\MyContainedDB.bak'
成功將MyContainedDB還原到另一台SQL Server Instance。
Contained Databae驗證測試
你可以看到 雖然MycontainedUser並未存在登入清單中,
但卻不像以往資料庫轉移後會出現資料庫主體的錯誤訊息,
而且也可以正常存取MyContainedDB。