[鐵人賽][Denali 新特性探險24]Contained Databases(2)

[鐵人賽][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'

image

備份成功。

 

2. 還原MyContaidedDB到 目的端(ServerB)

注意:

如果目的端SQL Server Instance未啟用自主資料庫驗證,

當你執行還原資料庫操作時,你將得到還原失敗的錯誤訊息(如下圖)

image

還原失敗。

 

啟用自主資料庫驗證

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'

image

 

 

再次執行還原

restore database MyContainedDB
from disk='D:\sqlbk\MyContainedDB.bak'

image

成功將MyContainedDB還原到另一台SQL Server Instance。

 

Contained Databae驗證測試

image

image

你可以看到 雖然MycontainedUser並未存在登入清單中,

但卻不像以往資料庫轉移後會出現資料庫主體的錯誤訊息

而且也可以正常存取MyContainedDB。