適用対象:SQL Server
この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server で SQL Server エージェント プロキシ アカウントを作成する方法について説明します。
SQL Server エージェント プロキシ アカウントは、ジョブ ステップを実行できるセキュリティ コンテキストを定義します。 各プロキシは、セキュリティ資格情報に対応します。 特定のジョブ ステップに権限を設定するには、SQL Server エージェント サブシステムに必要な権限のあるプロキシを作成し、このプロキシをジョブ ステップに割り当てます。
Von Bedeutung
Azure SQL Managed Instance では、SQL Server エージェントのほとんどの機能が現在サポートされているわけではありません。 詳細については、Azure SQL Managed Instance T-SQL と SQL Server の違いに関するページ、または「SQL Managed Instance 内での SQL Agent ジョブの制限事項」を参照してください。
制限事項
資格情報を用意していない場合は、プロキシを作成する前に、まず資格情報を作成する必要があります。
SQL Server エージェント プロキシは、資格情報を使用して Windows ユーザー アカウントに関する情報を格納します。 資格情報で指定されたユーザーは、SQL Server が実行されているコンピューターでの "ネットワーク経由でコンピューターへアクセス" 権限 (SeNetworkLogonRight
) を持っている必要があります。
SQL Server エージェントは、プロキシのサブシステム アクセスをチェックし、ジョブ ステップが実行されるたびにプロキシにアクセスできるようにします。 プロキシがサブシステムにアクセスできなくなった場合、ジョブ ステップは失敗します。 それ以外の場合、SQL Server エージェントは、プロキシで指定されたユーザーを偽装し、ジョブ ステップを実行します。 プロキシ サブシステムの一覧については、sp_grant_proxy_to_subsystem に関するページを参照してください。
プロキシを作成しても、そのプロキシの資格情報で指定したユーザーの権限は変更されません。 たとえば、SQL Server のインスタンスに接続する権限を持たないユーザーのプロキシを作成できます。 この場合、このプロキシを使用するジョブ ステップから SQL Server に接続することはできません。
ユーザーのログインがプロキシにアクセスできる場合、またはユーザーがプロキシにアクセスできる任意のロールに属している場合、ユーザーはジョブ ステップでプロキシを使用できます。
権限
sysadmin 固定サーバー ロールのメンバーだけに、プロキシ アカウントを作成、変更、または削除できる権限があります。 固定サーバー ロール sysadmin のメンバーではないユーザーは、msdb
データベースの SQL Server エージェント固定データベース ロールである SQLAgentUserRole、SQLAgentReaderRole、または SQLAgentOperatorRole のいずれかに追加されないと、プロキシを使用できません。
プロキシに加えて資格情報を作成する場合は、ALTER ANY CREDENTIAL
権限が必要です。
SQL Server Management Studio (SSMS) を使用する
オブジェクト エクスプ ローラーで、SQL Server エージェントでプロキシを作成するサーバーをプラス記号を選択して展開します。
プラス記号をクリックして、SQL Server エージェントを展開します。
[プロキシ] フォルダーを右クリックし、 [新しいプロキシ]を選択します。
[新しいプロキシ アカウント] ダイアログ ボックスの [全般] ページで、 [プロキシ名] ボックスにプロキシ アカウントの名前を入力します。
[資格情報名] ボックスに、プロキシ アカウントが使用するセキュリティ資格情報の名前を入力します。
[説明] ボックスに、プロキシ アカウントの説明を入力します。
[以下のサブシステムに対してアクティブ]から、このプロキシ用の適切なサブシステムを選択します (複数選択可能)。
[プリンシパル] ページで、プロキシ アカウントへのアクセスを許可するログインまたはロールを追加するか、あるいは拒否するログインまたはロールを削除します。
完了したら、OKを選択します。
Transact-SQL の使用
次のスクリプトでは、CatalogApplicationCredential
という名前の資格情報を作成し、プロキシ Catalog application proxy
を作成し、その資格情報 CatalogApplicationCredential
を割り当て、そのプロキシに ActiveX スクリプト サブシステムへのアクセス権を付与します。
資格情報
CatalogApplicationCredential
を作成します。USE msdb; GO CREATE CREDENTIAL CatalogApplicationCredential WITH IDENTITY = 'REDMOND/TestUser', SECRET = 'G3$1o)lkJ8HNd!'; GO
プロキシ
Catalog application proxy
を作成し、資格情報CatalogApplicationCredential
を割り当てます。EXECUTE dbo.sp_add_proxy @proxy_name = 'Catalog application proxy', @enabled = 1, @description = 'Maintenance tasks on catalog application.', @credential_name = 'CatalogApplicationCredential'; GO
プロキシ
Catalog application proxy
に ActiveX スクリプティング サブシステムへのアクセス権を付与します。EXECUTE dbo.sp_grant_proxy_to_subsystem @proxy_name = N'Catalog application proxy', @subsystem_id = 2; GO