トップ回答者
sp_OAGetPropertyについて

質問
-
SQL SERVER2008でストアドを作成しています。
xp_cmdshellを使用しないで、sp_OACreateと
sp_OAMethodでDOSコマンドをストアドの中で実行したいです。エラー処理は、省略していますが
パラメータ@paramで'dir c:\'と設定してストアドを起動していますが、
**************************************************************
EXECUTE @OLEResult = sp_OACreate 'WScript.Shell', @ShellID OUTSET @param = '%comspec% /c ' + @param
EXECUTE @OLEResult = sp_OAMethod @ShellID, 'Exec',@oexec output, @paramEXECUTE @OLEResult = sp_OAGetProperty @ShellID, 'stdout.readall', @output out
***************************************************************
最後のsp_OAGetPropertyで"名前が不正です”とエラーになります。dirコマンドの出力を返したいです。
よろしくお願いします。
回答
-
まず確認。
sp_configure 'show advanced', 1
reconfigure
go
sp_configure 'Ole Automation Procedures', 1
と OLE が使える状態にしているんですよね?
内容を見るに xp_cmdshell でやっていることをあえて、WScript でラップしてるだけですよね。
どっちでもいいんだけど、ローカルのディレクトリを見つけるのに、あまりよいお作法とはいえないですね。
それは置いておいて、sp_OAGetProperty でプロパティを取得しなくても、sp_OAMethod でプロパティを取得できますよ。
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.ja/s10de_6tsql/html/1dfaebe2-c7cf-4041-a586-5d04faf2e25e.htm
おがわみつぎ@PASSJ理事/MVP for Windows Server System - SQL Server- 回答としてマーク 高橋 春樹 2010年1月28日 10:13
すべての返信
-
まず確認。
sp_configure 'show advanced', 1
reconfigure
go
sp_configure 'Ole Automation Procedures', 1
と OLE が使える状態にしているんですよね?
内容を見るに xp_cmdshell でやっていることをあえて、WScript でラップしてるだけですよね。
どっちでもいいんだけど、ローカルのディレクトリを見つけるのに、あまりよいお作法とはいえないですね。
それは置いておいて、sp_OAGetProperty でプロパティを取得しなくても、sp_OAMethod でプロパティを取得できますよ。
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.ja/s10de_6tsql/html/1dfaebe2-c7cf-4041-a586-5d04faf2e25e.htm
おがわみつぎ@PASSJ理事/MVP for Windows Server System - SQL Server- 回答としてマーク 高橋 春樹 2010年1月28日 10:13
-
こんにちは、フォーラムオペレーターの高橋春樹です。
おがわみつぎさん、アドバイス有難うございました。
lucky1さん、MSDNフォーラムのご利用有難うございます。
おがわみつぎさんからアドバイスを頂いたと思うのですが、如何でしょうか?
その後の状況が気になるので、返信して頂けると助かります!今回、おがわみつぎさんからのアドバイスが有用な情報だと思いましたので、
勝手ながら、回答マークを付けさせてもらいました。
もし、まだ問題が解決していない場合は、回答マークを削除して頂いても問題ありません。今後ともMSDNフォーラムを宜しくお願いします(^_^)
マイクロソフト株式会社 フォーラム オペレーター 高橋春樹