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' が存在しないか、詳細構成オプションの可能性があります。
ファセットの設定を変更
コマンド実行以外の方法でもできました。
- SQLServer Management Studioでサーバーを右クリックする。
- メニューからファセットをクリックする。
- ファセットのコンボボックスから「Server Security」を選択する。
- 一番下のほうにある「XPCmdShellEnabled」をFalse→Trueに変更する。
- OKボタンをクリックする。
以上