web-dev-qa-db-ja.com

sysadmin以外のユーザーのSQL ServerエージェントをSSMSに表示するにはどうすればよいですか?

ユーザーをmsdbデータベースに既にマップし、SQLAgentOperatorRoleの役割を割り当てましたが、ユーザーはSQL Server Agentを表示できません。接続します。

SQL Serverエージェントは、sysadminとしてログインすると正常に表示されます。

5
Alexandru Puiu

考慮すべき点がいくつかあります。

  1. SQL Server 2012に接続するユーザーがSSMS 2012を使用していることを確認してください。間違ったバージョンで接続すると一部の機能が表示されない場合、互換性の問題が発生しました。

  2. ユーザーからすべての役割を削除して再度付与し、 these の手順を繰り返して、最初に正しく実行したことを確認します。

アカウントを作成して役割を割り当てるためのスクリプト:

USE [master] 
CREATE LOGIN SQlSATest WITH PASSWORD = 'test', CHECK_EXPIRATION=OFF, CHECK_POLICY= OFF; 
USE [msdb]
CREATE USER [SQLSATest] FROM LOGIN SQLSATest; 
EXECUTE sp_addrolemember @rolename = 'SQLAgentOperatorRole', @membername = 'SQLSATest'
2

質問の作成者が最初に残したコメントに基づくWikiの回答:

元のアカウントの問題は、SQLを設定してすべてのデータベースをユーザーから非表示にすることでした(問題のユーザーは従業員ではなく、多くのクライアントを持つNDAがあるため、一部のデータベースの名前は機密と見なされる場合があります(例))):

use master 
GO 
DENY VIEW ANY DATABASE TO [myuser]; 
GO

残念ながらSQL Agentも隠されています。データベースを非表示にして、SQLエージェントを残したかったのです。

このユーザーの新しいインスタンスを作成することで回避しました。

0
dezso