none
sp_OAGetPropertyについて RRS feed

  • 質問

  • SQL SERVER2008でストアドを作成しています。
    xp_cmdshellを使用しないで、sp_OACreateと
    sp_OAMethodでDOSコマンドをストアドの中で実行したいです。

    エラー処理は、省略していますが
    パラメータ@paramで'dir c:\'と設定してストアドを起動していますが、
    **************************************************************
    EXECUTE @OLEResult = sp_OACreate 'WScript.Shell', @ShellID OUT

    SET @param = '%comspec% /c ' + @param
     
    EXECUTE @OLEResult = sp_OAMethod @ShellID, 'Exec',@oexec output,  @param

    EXECUTE @OLEResult = sp_OAGetProperty @ShellID, 'stdout.readall', @output out
    ***************************************************************
    最後のsp_OAGetPropertyで"名前が不正です”とエラーになります。

    dirコマンドの出力を返したいです。

    よろしくお願いします。

    2010年1月7日 7:37

回答

  • まず確認。
    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月11日 1:56

すべての返信

  • まず確認。
    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月11日 1:56
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    おがわみつぎさん、アドバイス有難うございました。

    lucky1さん、MSDNフォーラムのご利用有難うございます。

    おがわみつぎさんからアドバイスを頂いたと思うのですが、如何でしょうか?
    その後の状況が気になるので、返信して頂けると助かります!

    今回、おがわみつぎさんからのアドバイスが有用な情報だと思いましたので、
    勝手ながら、回答マークを付けさせてもらいました。
    もし、まだ問題が解決していない場合は、回答マークを削除して頂いても問題ありません。

    今後ともMSDNフォーラムを宜しくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年1月28日 10:17