現在オフラインです。再接続するためにインターネットの接続を待っています

PRB: エラー 1314: Non-SA ユーザーとして実行したとき xp_cmdshell によって発せられるエラー

この記事は、以前は次の ID で公開されていました: JP248391
現象
SA 以外のアカウントとして SQL Server にログオンしたときに、xp_cmdshell を通じてオペレーティング システムのジョブを実行すると、次のエラーを受け取ります。
Msg 50001, Level 1, State 50001
xpsql.c: Error 1314 from LogonUser on line 476
一方、次のエラーを受け取ることもあります。
Msg 50001, Level 1, State 50001
xpsql.c: Error 1314 from CreateProcessAsUser on line 492
原因
SYMPTOMS の項に一覧表示されるエラーは、MSSQLServer が実行している SQLAgentCmdExec Windows NT アカウントに設定されている権限が誤っているために発せられたものです。
回避策
MSSQLServer サービスが実行している Windows NTアカウントが、サーバーにおけるローカル管理者グループのメンバーであることを確認してください。

MSSQLServer サービスが実行しているアカウントに、次の有効なユーザー権限があることを確認してください。
   オペレーティング システムの一部として機能   クォータの増加
さらに、ローカルの SQLAgentCmdExec アカウントが持つ次の権限が、オンに設定されていることを確認してください。
   バッチ ジョブとしてログオン
詳細
Xpsql.c は、製品に同梱されているサンプル コードに収められています。Win32 API 機能である LogonUser() に対する呼び出しが失敗した場合、476 行のエラーが発せられます。CreateProcessAsUser() に対する呼び出しが失敗した場合、492 行のエラーが発せられます。

このエラーは、これらの機能を呼び出すアカウントにログインを完了させるユーザー権限がないことを示します。そのため、多くの顧客は、SQLAgentCmdExec アカウントのアカウント権限を取り消すか、または User マネージャもしくは SQL Enterprise Manager を使用してアカウントを再作成することになります。

しかし、これらのエラーを発している原因は API コール (Sqlservr.exe) を呼び出しているプロセスです。したがって、不適切で不十分な権限を保持しているのは、MSSQLServer サービスが実行しているアカウントです。LogonUser() を正常に実行するには、MSSQLServer アカウントに有効な SE_TCB_NAME (オペレーティング システムの一部として動作する) 権限を与える必要があります。CreateProcessAsUser() を正常に実行するには、MSSQLServer アカウントに有効な SE_INCREASE_QUOTA_NAME (割り当てを増やす) 権限を与える必要があります。

注意 : ある種類のプロセスに関しては、CreateProcessAsUser() も、SE_ASSIGNPRIMARYTOKEN_NAME (プロセス レベルのトークンを置き換える) をオンに設定することが必要な場合があります。
詳細
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 248391(最終更新日 2000-01-11) をもとに作成したものです。

プロパティ

文書番号:248391 - 最終更新日: 09/28/2004 04:07:00 - リビジョン: 1.1

  • Microsoft SQL Server 1.1 Standard Edition
  • kbtshoot kbbug6.50 ssrvstproc ssrvisql ssrvadmin kbbug7.00 KB248391
フィードバック