12
6

More than 5 years have passed since last update.

SQLServerでxp_cmdshellがブロックされた時の対処法

Last updated at Posted at 2018-01-24

xp_cmdshellのコマンドを有効にするまでの備忘録をまとめました。

あらすじ

DBサーバの移行作業時に動作確認をしていたところ、エラーメッセージが表示されました。

SQL Server によって、コンポーネント 'xp_cmdshell' の プロシージャ 'sys.xp_cmdshell' に対するアクセスがブロックされました。
サーバーのセキュリティ構成で、このモジュールが OFF に設定されているためです。
システム管理者は sp_configure を使用して、'xp_cmdshell' の使用を有効にできます。
'xp_cmdshell' を有効にする手順の詳細については、SQL Server オンライン ブックの「セキュリティ構成」を参照してください。    
場所 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

sp_configureを使ってみる

コマンドで実行しました。

EXEC sp_configure ‘show advanced options’, 1;
RECONFIGURE;
EXEC sp_configure ‘xp_cmdshell’, 1;
RECONFIGURE;

これで有効にできました。
途中の「RECONFIGURE」を実行しないと下記のエラーメッセージが表示されることがあるため注意。

構成オプション 'xp_cmdshell' が存在しないか、詳細構成オプションの可能性があります。

ファセットの設定を変更

コマンド実行以外の方法でもできました。

  1. SQLServer Management Studioでサーバーを右クリックする。
  2. メニューからファセットをクリックする。
  3. ファセットのコンボボックスから「Server Security」を選択する。
  4. 一番下のほうにある「XPCmdShellEnabled」をFalse→Trueに変更する。
  5. OKボタンをクリックする。

1.png

2.png

以上

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6