- 締切済み
ストアドプロシージャで外部プログラムを起動するには?
こんにちは。 SQL Serverから外部プログラムを呼び出すストアドプロシージャを作りたいと思っていますがなかなか上手くいきません。 データベースの内容が変わったときに(INSERT,DELETE等で)特定の外部プログラムを実行するストアドプロシージャを作りたいと思っています。 (SQL Serverに関してまったくの素人なので言葉に誤りがあるかもしれません) 外部プログラムを呼び出す機能として、拡張ストアドプロシージャでxp_cmdshellというものがあるらしいのですが、sysadminユーザしか使うことが出来ず、セキュリティ上にも問題があるとのことなので、xp_cmdshellを使わずに外部プログラムを呼び出す方法を探しています。 具体的な方法、ソース等ありましたら、教えてもらえないでしょうか? また、そんなこと出来ないと言ったことでも教えてもらえると助かります。 現在の環境 Windows XP Professional SQL Server 2005 Developer Edition 宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
条件がDMLトリガによる起動となっていますので、ストアドプロシージャ以外の選択肢はないですね。そうすると、そもそも以下のいずれかの方法しかないと思うのですが、セキュリティの条件が厳しいならば、設定が初心者向けではないため、お勧めできません。 ・xp_cmdshellをEXECUTE AS句を指定したストアドプロシージャの中で使う。sysadmin権限がなくても、ストアドプロシージャを実行させることができます。ただし、偽装実行を認めるための設定が必要で、セキュリティを考慮する場合は証明書による署名をかけることになります。 ・CLRストアドプロシージャを.NETで作成し、権限セットを「外部アクセス」に指定して、SQL Serverに配置する。これもセキュリティの条件が厳しいならば、署名を掛ける 実際の手順を紹介しているサイトを見た記憶はありませんが、MCP教科書(MCITP)のDatabase Administratorで、署名付CLRストアドプロシージャの作成手順については紹介されていたと思います。