LoginSignup
2
2

More than 5 years have passed since last update.

SQLServer: SQLServerProfiler, 動的管理ビュー, 利用状況モニタの閲覧に必要な権限を付与する

Posted at

動的管理ビュー(DMV)やSQLServerProfilerが閲覧できると、有益な情報が沢山取得できて非常に強力な反面、sysadminロールを安易に割り当てるのは危険すぎますよね、、、
read権限しかなく、write権限は持たないまま(=update/insertなど不可能なまま)、DMVのSELECTやProfilerの使用ができるような権限の付与方法が知りたい!!!と思って調査しました。

付与する権限と付与方法について

・目的は、SQLServerProfiler と 動的管理管理ビューを閲覧できる状態にすること。ただし、テーブルやストアドのALTER,INSERT,UPDATE,DROPなどはできない状態を保ちたい

・権限にはサーバーレベルのものと、データーベースレベルのものがある。今回付与したい権限は全てサーバーレベル。

・権限割り当てについては、「ロールに権限付与→ロールを各ログインに割り当て」という手順が望ましいが、
SQLServer2008までは、ユーザが作れるロールはデータベースロールのみ。サーバーロールは任意で作成したり、既存のロールを変更することができない。
※ユーザ定義サーバーロールが作れるのは2012以降 https://technet.microsoft.com/ja-jp/magazine/hh641407.aspx

そのため、今回の環境(SQLServer 2008以前)については、サーバーレベルの権限は、各ログインに対して個別に直接割り当てる必要がある。

各ログイン(=ユーザー)に対して権限を付与するSQL

-- SQLServer Profilerが閲覧できる権限を付与する
USE [master]
GO
GRANT ALTER trace TO [ログイン名(例. emotu)]
GO

-- 動的管理ビューを閲覧できる権限を付与する
USE [master]
GO
GRANT VIEW SERVER STATE TO [ログイン名(例. emotu)]
GO

-- 上記2権限を付与することにより、利用状況モニターから「プロセスの削除」ができるようになってしまうので、その権限だけ奪う
USE [master]
GO
REVOKE ALTER ANY CONNECTION TO [ログイン名(例. emotu)]
GO

以上でwrite権限は付与しないまま、DMVのSELECTやProfilerの利用ができるようになります。最高っ!!
※ただし、VIEW SEVER STATE権限もかなり強力な機能なので、付与するときは慎重に、、、
※その他、何かしらの更新/削除が行えてしまう可能性も0ではないので、付与は慎重に行ってください。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2