SQL Server 2000には、外部の exe を呼び出す通常の (つまり、拡張されていない) ストアド プロシージャがあります。その exe は、SDK からの .dll をロードし、そこからいくつかのプロシージャ (つまり、Init、DoStuff、Shutdown) を呼び出します。
この外部 exe を使用する唯一の理由は、.dll を呼び出す拡張ストアド プロシージャを作成したくなかったからです。dll がクラッシュした場合 (可能性は低いですが)、SQL Server プロセスもクラッシュすると考えられていましたが、これは私たちが望んでいたことではありませんでした。外部exeを使用すると、そのexeだけがクラッシュします。
現在、SQL Server 2008にアップグレードし、それを呼び出す CLR ストアド プロシージャを作成して、exe を削除することを検討しています。もちろん、この SP は UNSAFE としてマークされます。そのための問題は、拡張 SP アプローチと比較して、そのようにすることは安全である (より安全である、十分に安全であるなど) か?
私がBOLで追い詰めた唯一の関連するものは次のとおりです。
UNSAFE を指定すると、アセンブリ内のコードが SQL Server プロセス空間に対して不正な操作を実行できるようになるため、SQL Server の堅牢性とスケーラビリティが損なわれる可能性があります。
、しかし、「堅牢性とスケーラビリティ」を求めているのではなく、安定性と物事を稼働させ続けることを求めているため、それが私の質問に答えるかどうかはわかりません。
PS: SP のアクセス許可を管理するときに不都合が生じるため、exe を削除したいと考えています (xp_cmdshell を含む SP を呼び出すと、突然適用されるものです)。