権限を確認するためのテストアカウントを作成しました。現在、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を作成する特権を付与しないことに注意してください。これを行うには、test userをdb_accessadminのメンバーシップとして設定する必要があります。このロールは、create schemaおよびに特権を付与し、任意のユーザーを変更します。 alter any user特権は、dbo userをスキーマ所有者として設定するために必要です。
USE [your_database]
GO
ALTER ROLE [db_accessadmin] ADD MEMBER [teste]
GO
この後、次のような新しいスキーマでDBOを承認できます。
USE [your_database]
GO
CREATE SCHEMA [test] AUTHORIZATION [dbo]
GO
これを行うための権限を付与するもう1つのロールはdb_ownerですが、これには「いくらか強力な」権限があります。そのため、正しい役割はdb_accessadminです。各パーミッションの詳細については this link を参照してください
正しいデータベースで次のコマンドを使用することを忘れないでください。
USE [your_database]