xp_cmdshell
概念実証として、既存のソリューションにコマンドを挿入しようとしています。現在、アプリケーションはデータベースサーバーでストアドプロシージャを呼び出します。これは、プロファイルを作成すると次のようになります。
declare @P1 int
set @P1=1
exec Name_Of_The_SP @param1 = 3, @param2 = 'blah', @parametc = 'blahetc', @ID = P1 output
select @P1
SPは基本的にトランザクションを開き、行を挿入してからコミットします。この中に追加しました:
exec master..xp_cmdshell 'dir > c:\test.txt'
次に、SSMSクエリウィンドウでコードの最初のブロックを実行すると、ファイルがサーバー上で期待どおりに生成されます。しかし、アプリケーションを使用してアプリケーションを呼び出すと、行は通常どおり挿入されますが、ファイルは生成されませんか?
SQL ServerとSQLAgentのユーザーはローカル管理者とシステム管理者であるため、そこで問題を確認することはできません。アプリケーションユーザーをローカル管理者にしようとしましたが、無駄になりましたが、すでにシステム管理者でした。
これはSQLServer2000です