搜尋本站文章

2012-04-20

SQL Server 2012 新功能:定義 Windows 群組的預設結構描述(Default Schema for Groups)

在 SQL Server 2012 版本上,可以定義 Windows 群組的預設結構描述。

但是在先前的版本,是無法定義 Windows 群組的預設結構描述。


準備工作:

步驟01. 建立Windows群組:WG1。

步驟02. 建立Windows登入帳戶:w1,隸屬於此Windows群組:WG1。

步驟03. 將此Windows群組:WG1,設定可以存取SQL Server。

步驟04. 設定此Windows群組:WG1在Northwind資料庫是隸屬於db_owner群組。

步驟05. 使用Windows登入帳戶:w1,登入到系統,並且建立資料表。


使用 SQL Server 2008 R2 版本為例

-- 01_SQL Server 2008_資料表



-- 02_SQLServer2008_使用者



-- 03_SQLServer2008_結構描述



-- 04_SQLServer2008_資料庫使用者_ 群組帳戶_預設結構描述




使用 SQL Server 2012 版本為例

-- 05_SQLServer2012_資料表



-- 06_SQLServer2012_使用者



-- 07_SQLServer2012_結構描述



-- 08_SQLServer2012_群組帳戶_指定預設結構描述為dbo





若是未指定此群組帳戶的預設結構描述
使用 SQL Server 2012 版本為例

-- 09_SQLServer2012_資料表



-- 10_SQLServer2012_使用者



-- 11_SQLServer2012_結構描述



-- 12_SQLServer2012_資料庫使用者_群組帳戶_沒有指定預設結構描述



若要修正這問題:
1. 刪除此Windows使用者帳戶、結構描述、所屬物件。
2. 重新設定此Windows群組帳戶的預設結構描述。



預設結構描述(Default Schema)

預設結構描述是伺服器在解析這個資料庫使用者的物件名稱時,所搜尋到的第一個結構描述。
除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。

如果使用者有預設結構描述,則使用預設結構描述。
如果使用者沒有預設結構描述,但使用者是有預設結構描述之群組的成員,則使用群組的預設結構描述。

如果使用者沒有預設結構描述,而是有預設結構描述之多個群組的成員,將使用最低 principle_id 之 Windows 群組的結構描述 (您無法明確選取其中一個可用的預設結構描述當做慣用結構描述)。
如果無法判斷使用者的預設結構描述,將使用dbo結構描述。

DEFAULT_SCHEMA可以在它所指向的結構描述建立之前設定。
當您建立對應到憑證或非對稱金鑰的使用者時,不能指定DEFAULT_SCHEMA。

如果使用者是系統管理員 (sysadmin) 固定伺服器角色的成員,則會忽略DEFAULT_SCHEMA的值。
系統管理員 (sysadmin) 固定伺服器角色的所有成員都有預設的dbo結構描述。



參考資料

CREATE USER (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms173463.aspx