- PR -

xp_cmdshellの使用時にエラーメッセージが表示されます

1
投稿者投稿内容
EarlyHero
常連さん
会議室デビュー日: 2007/03/16
投稿数: 37
お住まい・勤務地: 福岡県
投稿日時: 2007-12-12 13:21
こんにちは、EarlyHeroです。

SQLServer2000でxp_cmdshellを使用してvbsファイルを実行しようとしています。
sysadminでないユーザなのでEXECUTE権限を与えたのですが、実行しようとすると
以下のメッセージが表示されて実行できません。

[実行クエリ]
exec master.dbo.xp_cmdshell 'C:\XXXXX.vbs'

[実行結果]
メッセージ 50001、レベル 1、状態 50001
xp_cmdshell failed to execute because current security context is not sysadmin
and proxy acount is not setup correctly. For more information, refer to Book
Online, search for topic related to xp_sqlagent_proxy_account.

対応方法をご存知の方はいらっしゃらないでしょうか?

ちなみに、(当たり前ですが)ユーザsaで実行した場合は問題ありませんでした。

お手数をおかけいたしますが、宜しくお願い致します。

[ メッセージ編集済み 編集者: EarlyHero 編集日時 2007-12-12 13:32 ]
EarlyHero
常連さん
会議室デビュー日: 2007/03/16
投稿数: 37
お住まい・勤務地: 福岡県
投稿日時: 2007-12-12 14:05
こんにちは、EarlyHeroです。

関係性の高いサイトを見つけました。
<http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/tsqlref/ts_xp_aa-sz_8sdm.asp>

sysadminでないユーザで実行しようとする場合、
[SQLServerエージェントプロキシアカウント]というアカウントが
必要らしいです。

実際に以下のクエリを実行してSQLServerエージェントプロキシアカウントが
存在していないことが分かりました。

[実行クエリ]
EXEC master.dbo.xp_sqlagent_proxy_account N'GET'

これで解決するかどうか分かりませんが、私の一存でアカウントを
追加することはできませんので事後報告しようと思います。

その前に何か他にご存知の方がいらっしゃったら、
ご遠慮なくご返信いただけると助かります。

また、「SQLServerエージェントプロキシアカウントだけじゃないよ」的な
ご意見があればお待ちしております。

[ メッセージ編集済み 編集者: EarlyHero 編集日時 2007-12-18 15:09 ]
EarlyHero
常連さん
会議室デビュー日: 2007/03/16
投稿数: 37
お住まい・勤務地: 福岡県
投稿日時: 2007-12-17 18:34
こんにちは、EarlyHeroです。

原因が分かりましたので報告します。

原因はプログラムの仕様にありました。
私が扱っているプログラムは、(内部的な詳細は知らされていませんが)
実際にストアドプロシージャを動かしているユーザが別にいたようでして、
そのユーザに権限を与えることで無事に解決しました。

今回の問題は下記の@またはAで対応できます。

@実行するユーザにxp_cmdshellの権限を与える
A実行するユーザをsysadmin(System Administrators)に設定する

sysadminでないユーザ(@の対応)の場合は、
SQLServerエージェントプロキシアカウントが
必要になるので、今回はAの対応にしています。

以上です。

[ メッセージ編集済み 編集者: EarlyHero 編集日時 2007-12-18 15:10 ]
1

スキルアップ/キャリアアップ(JOB@IT)