ユーザーをmsdb
データベースに既にマップし、SQLAgentOperatorRole
の役割を割り当てましたが、ユーザーはSQL Server Agentを表示できません。接続します。
SQL Serverエージェントは、sysadmin
としてログインすると正常に表示されます。
考慮すべき点がいくつかあります。
SQL Server 2012に接続するユーザーがSSMS 2012を使用していることを確認してください。間違ったバージョンで接続すると一部の機能が表示されない場合、互換性の問題が発生しました。
ユーザーからすべての役割を削除して再度付与し、 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'
質問の作成者が最初に残したコメントに基づくWikiの回答:
元のアカウントの問題は、SQLを設定してすべてのデータベースをユーザーから非表示にすることでした(問題のユーザーは従業員ではなく、多くのクライアントを持つNDAがあるため、一部のデータベースの名前は機密と見なされる場合があります(例))):
use master
GO
DENY VIEW ANY DATABASE TO [myuser];
GO
残念ながらSQL Agentも隠されています。データベースを非表示にして、SQLエージェントを残したかったのです。
このユーザーの新しいインスタンスを作成することで回避しました。