Sql-Server
為什麼我不能創建所有者設置為 dbo 的新架構?
我創建了一個測試帳戶來檢查權限。它目前具有 Northwind 數據庫的 db_datareader、db_datawriter 和 db_ddladmin 角色。但是當它嘗試在 Northwind 上創建新架構時,如果它嘗試將 dbo 授權為架構所有者,則創建失敗,這是怎麼回事?
Version: SQL Server Management Studio: 15.0.18183.0 Microsoft Analysis Services Client Tools: 15.0.1487.0 Microsoft Data Access Components (MDAC): 10.0.18362.1 Microsoft MSXML: 3.0 6.0 Microsoft Internet Explorer: 9.11.18362.0 Microsoft .NET Framework: 4.0.30319.42000 Operating System: 10.0.18362
db_datareader、db_datawriter 和 db_ddladmin 權限不會為此操作提供必要的權限。
db_datareader: db_datareader 固定數據庫角色的成員可以讀取所有使用者表中的所有數據。
db_datawriter: db_datawriter 固定數據庫角色的成員可以添加、刪除或更改所有使用者表中的數據。
db_ddladmin: db_ddladmin 固定數據庫角色的成員可以在數據庫中執行任何數據定義語言 (DDL) 命令。
如您所見,這些權限將賦予您創建和操作某些數據庫結構的權限。但是,它們不會授予您更改其他使用者或創建模式的權限。
檢查來自Microsoft的數據庫級別角色和權限的 圖像
請注意,db_ddladmin權限不會授予您創建 SCHEMA 的權限。為此,您需要將您的測試使用者設置為db_accessadmin的成員。此角色將授予創建模式和更改任何使用者的權限。將dbo 使用者設置為模式所有者需要更改任何使用者權限:
USE [your_database] GO ALTER ROLE [db_accessadmin] ADD MEMBER [teste] GO
在此之後,您將可以在新架構中授權 DBO,例如:
USE [your_database] GO CREATE SCHEMA [test] AUTHORIZATION [dbo] GO
另一個角色將授予執行此操作的權限是 db_owner,但是對此具有“一些強大的”權限。這就是為什麼正確的角色是 db_accessadmin。您可以在此連結上閱讀有關每個權限的更多資訊
請記住在正確的數據庫中使用以下命令:
USE [your_database]