web-dev-qa-db-ja.com

テーブルを作成するためのSQL Serverデータベースレベルのロール

テーブルを作成するための特別なロールを作成または変更する方法はありますか?ソフトウェア開発チームにはdb_datareaderおよびdb_datawriterロール。ただし、新しいテーブルを作成することはできません。

データベースレベルのロールに関連するこの記事を読みました。 付与したくないdb_ddladminこの役割には権限が多すぎるため、役割。

だから私の質問は、データベースのテーブルの作成および削除権限をどのように与えることができるのですか?ビュー、プロシージャ、関数も問題ありません。必要なのは、セキュリティ、ログイン、またはバックアップ操作に関連する権限を付与したくないことだけです。

1
kojirosan

特定の権限を持つロールを作成する場合は、これを行うことができます:

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
4
Randi Vertongen

このために独自のデータベースロールを作成し、データベースレベルでCREATE TABLEを付与できます。

GRANT CREATE TABLE TO rolename

もちろん、必要に応じて、この権限をユーザーに直接付与することもできます。

2
Tibor Karaszi