GRANT システム オブジェクトのアクセス許可 (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

システム ストアド プロシージャ、拡張ストアド プロシージャ、関数、ビューなどのシステム オブジェクトに対する権限を許可します。

Transact-SQL 構文表記規則

構文

GRANT { SELECT | EXECUTE } ON [ sys. ] system_object TO principal
[ ; ]

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

[ sys. ]

sys 修飾子は、カタログ ビューと動的管理ビューを参照している場合にのみ必要です。

system_object

権限を許可するオブジェクトを指定します。

principal

権限を許可するプリンシパルを指定します。

解説

このステートメントを使用すると、SQL Server によってインストールされる特定のストアド プロシージャ、拡張ストアド プロシージャ、テーブル値関数、スカラー関数、ビュー、カタログ ビュー、互換性ビュー、ビュー、 INFORMATION_SCHEMA 動的管理ビュー、システム テーブルに対するアクセス許可を付与できます。 これらのシステム オブジェクトはそれぞれ、サーバーのリソース データベース (mssqlsystemresource) に一意なレコードとして存在しています。 リソース データベースは読み取り専用です。 オブジェクトへのリンクは、各データベースの sys スキーマでは 1 レコードとして表されます。 システム オブジェクトを実行または選択する権限は、許可、拒否、および取り消しが可能です。

オブジェクトを実行または選択するためのアクセス許可を付与しても、必ずしもそのオブジェクトを使用するために必要なすべてのアクセス許可が伝達されるとは限りません。 ほとんどのオブジェクトは、追加のアクセス許可が必要な操作を実行します。 たとえば、ユーザーが sysadmin 固定サーバー ロールのメンバーでなければ、アクセス許可sp_addlinkedserverが付与EXECUTEされているユーザーはリンク サーバーを作成できません。

既定の名前解決では、修飾子のないプロシージャ名はリソース データベースとして解釈されます。 したがって、sys 修飾子は、カタログ ビューと動的管理ビューを指定する場合にのみ必要です。

トリガーとシステム オブジェクトの列に対するアクセス許可の付与はサポートされていません。

システム オブジェクトに対するアクセス許可は、SQL Server のアップグレード中に保持されます。

アクセス許可を付与するにはデータベース内 master に存在し、権限を付与するプリンシパルはデータベース内の master ユーザーである必要があります。 つまり、サーバー レベルのアクセス許可である場合は、サーバー プリンシパルに付与することはでき、データベース プリンシパルのみに付与することはできません。

システム オブジェクトは、 sys.system_objects カタログ ビューで確認できます。 システム オブジェクトの権限は、master データベースの sys.database_permissions カタログ ビューで確認できます。

次のクエリでは、システム オブジェクトの権限に関する情報が返されます。

SELECT *
FROM master.sys.database_permissions AS dp
INNER JOIN sys.system_objects AS so
    ON dp.major_id = so.object_id
WHERE dp.class = 1 AND so.parent_object_id = 0;
GO

アクセス許可

CONTROL SERVER 権限が必要です。

A. ビュー Standard Edition LECT 権限を付与する

次の例では、SQL Server ログインの一覧を表示するビューを選択する権限を、SQL Server ログイン Sylvester1 に許可します。 この例では、ユーザーが所有していない SQL Server ログインのメタデータを表示するために必要な追加のアクセス許可を付与します。

USE master;
GO
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

B. 拡張ストアド プロシージャに EXECUTE 権限を付与する

次の例では、Sylvester1 に対し、xp_readmailEXECUTE 権限を許可します。

USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO