Sql-Server

如何在 CREATE SCHEMA 上設置 AUTHORIZATION

  • November 21, 2019

我正在尋找為現有數據庫創建一個新模式,該數據庫目前僅使用該dbo模式。我正在就如何設置AUTHORIZATION(所有者名稱)以及這將產生什麼影響提出建議。

1.我應該為此創建一個新使用者還是可以使用該dbo使用者?

我注意到Database Roles數據庫中的現有內容歸dbo使用者所有。

2.如果我將 設置AUTHORIZATION為新使用者,我需要創建新Database Roles使用者擁有的新使用者嗎?

我還注意到Default schemafor existingUsersdbo模式。

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 帳戶。如果使用者被刪除,可能會導致訪問架構出現問題。

引用自:https://dba.stackexchange.com/questions/253745