xp_cmdshell (Transact-SQL) | 備忘録 (。・_・。)ノ
xp_cmdshell (Transact-SQL)

xp_cmdshell オプションは、xp_cmdshell 拡張ストアド プロシージャをシステムで
実行できるかどうかをシステム管理者が制御できるようにする、
SQL Server のサーバー構成オプションです。 新しいインストールでは、
xp_cmdshell オプションは既定で無効になっており、ポリシー ベースの管理を使用するか、
次のコード例のように sp_configure システム ストアド プロシージャを実行することで有効にできます。

1.「xp_cmdshell」の有効化


-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO

2.「xp_cmdshell」の実行権限付与
sp_xp_cmdshell_proxy_account 'コンピュータ名\プロキシアカウント名','プロキシアカウントのパスワード'
↓ or
このプロキシ アカウントは、SQL Server Management Studio を使用して構成することもできます。そのためには、
オブジェクト エクスプローラーでサーバー名を右クリックして [プロパティ] をクリックし、
[セキュリティ] タブの [サーバーのプロキシ アカウント] セクションを使用します。

Management Studio で、master データベースを使用して GRANT exec ON xp_cmdshell TO '<somelogin>' ステートメントを実行し、
xp_cmdshell を実行する権限を sysadmin 以外の特定のユーザーに与えます。
指定したログインが master データベース内のユーザーにマップされている必要があります。

参考


xp_cmdshell 'whoami.exe'
xp_cmdshell 'dir *.exe';
DECLARE @cmd sysname, @var sysname
SET @var = 'dir/p'
EXEC master..xp_cmdshell @var