如何在 CREATE SCHEMA 上設置 AUTHORIZATION
我正在尋找為現有數據庫創建一個新模式,該數據庫目前僅使用該
dbo
模式。我正在就如何設置AUTHORIZATION
(所有者名稱)以及這將產生什麼影響提出建議。1.我應該為此創建一個新使用者還是可以使用該
dbo
使用者?我注意到
Database Roles
數據庫中的現有內容歸dbo
使用者所有。2.如果我將 設置
AUTHORIZATION
為新使用者,我需要創建新Database Roles
使用者擁有的新使用者嗎?我還注意到
Default schema
for existingUsers
是dbo
模式。3. 我是否需要
Users
使用設置為新架構的預設架構創建新的?我創建新模式的主要原因是按名稱而不是權限來分隔數據庫對象。我打算授予
Users
對新架構上特定數據庫過程的某些現有訪問權限,就像我們對 dbo 架構上的數據庫過程所做的那樣。
我很欣賞其他答案,但現在發布一個答案以傳達我現在從各種來源獲得的理解:
1. 我應該為此創建一個新使用者還是可以使用 dbo 使用者?
根據JasonBluefire 的回答,出於組織原因添加架構時可能會使用 dbo 使用者,而不是出於安全目的進行隔離。創建模式後,可以使用以下查詢查看此關係:
SELECT s.schema_id, s.name, dp.principal_id, dp.name, dp.type_desc FROM sys.schemas s INNER JOIN sys.database_principals dp ON s.principal_id = dp.principal_id
2. 如果我將 AUTHORIZATION 設置為新使用者,我需要創建新使用者擁有的新數據庫角色嗎?
數據庫角色的 dbo 所有權的唯一意義是*“角色的所有者或擁有角色的任何成員都可以添加或刪除角色的成員”。*. 請參閱創建角色MS 文件。因此,無需創建現有數據庫角色的新版本。
3. 我是否需要創建新使用者並將預設架構設置為新架構?
對於現有數據庫使用者,將預設模式設置為 dbo 的唯一意義在於,它將是*“伺服器在解析此數據庫使用者的對象名稱時將搜尋的第一個模式”。*. 請參閱創建使用者MS 文件。因此無需創建新使用者。
您無需創建新使用者即可成為架構的所有者。
預設的 dbo 所有者很好,特別是如果您出於組織原因而不是安全原因添加架構。
您無需創建新使用者即可訪問新架構。
我唯一要添加的是確保如果您確實從 dbo 更改所有者,您將其更改為域服務帳戶或其他永久 sql 帳戶。如果使用者被刪除,可能會導致訪問架構出現問題。