テーブルを作成するための特別なロールを作成または変更する方法はありますか?ソフトウェア開発チームにはdb_datareader
およびdb_datawriter
ロール。ただし、新しいテーブルを作成することはできません。
データベースレベルのロールに関連するこの記事を読みました。 付与したくないdb_ddladmin
この役割には権限が多すぎるため、役割。
だから私の質問は、データベースのテーブルの作成および削除権限をどのように与えることができるのですか?ビュー、プロシージャ、関数も問題ありません。必要なのは、セキュリティ、ログイン、またはバックアップ操作に関連する権限を付与したくないことだけです。
特定の権限を持つロールを作成する場合は、これを行うことができます:
CREATE ROLE CreateObjects
GRANT CREATE TABLE TO CreateObjects
GRANT CREATE VIEW TO CreateObjects
GRANT CREATE FUNCTION TO CreateObjects
GRANT CREATE PROCEDURE TO CreateObjects
GRANT ALTER ANY SCHEMA TO CreateObjects
テストユーザーを作成します:
CREATE LOGIN testlogin with password = 'StrongP@SSWORD123'
CREATE USER Testlogin FOR LOGIN Testlogin
ユーザーをロールに追加します:
ALTER ROLE CreateObjects ADD MEMBER Testlogin
ユーザーの権限をテストします:
EXECUTE AS LOGIN = 'testlogin'
SELECT SUSER_NAME(),USER_NAME()
(No column name) (No column name)
testlogin Testlogin
CREATE TABLE dbo.test(id int)
DROP TABLE dbo.test
REVERT
結果
Commands completed successfully.
またはトムが述べたように、ユーザーをdb_ddladminロールに追加します。
ALTER ROLE db_ddladmin ADD MEMBER testlogin
このために独自のデータベースロールを作成し、データベースレベルでCREATE TABLEを付与できます。
GRANT CREATE TABLE TO rolename
もちろん、必要に応じて、この権限をユーザーに直接付与することもできます。