※この記事はQiitaに投稿した記事を加筆修正しております。

 

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

2

 

以上

参考

【SQL】xp_cmdshell の利用方法

xp_cmdshell (Transact-SQL)