1

過去に、スクリプトを関数のパラメーターとして渡して特定の計算を実行できるように、SQLCLR 内にスリッピング言語 (JScript など) を埋め込むことができました。以下は単純な例です (関数 ssScriptExecute は、スクリプト内のすべての出力の連結を返します)。

select dbo.ssScriptExecute( 'print("Calculation: "+(1+2/3) );' )

-- Calculation: 1.6666666666666665

同じ方法で Powershell ランタイムを埋め込むことができれば幸いです。しかし、ランタイムはパスでアセンブリを見つけようとし、SQlCLR 内にはパスがないため、さまざまな問題が発生しました。発生したエラーについてさらに情報を提供できることをうれしく思いますが、誰かがこれを試したかどうか疑問に思っていました!

ありがとう!

4

3 に答える 3

1

System.Automation.Management を変更するには、コード インジェクションを使用します。GetPSVersionTable() の変数バージョンを "2.0" にすると、SQL Server で Powershell コードを実行できます。

Visual Studio プロジェクトで、この変更された dll を必ず参照してください。

http://www.box.net/shared/57122v6erv9ss3aopq7p

ところで、SQLでpowershellを実行して必要なすべてのdllを自動登録する

このps1コードを使用できます

http://www.box.net/shared/tdlpu1875clsu8azxq4b

于 2011-07-06T08:50:03.913 に答える
1

これを行う唯一の方法は、powershell をホストする WCF サービスを作成し、SQLCLR に要求 dbo.ssScriptExecute(...) をそのサービスに送信して実行させることだと思います。それに加えて、paxScript.net を SQLCLR (DLR 言語のメモリ リークの問題がないインタープリター) に埋め込むことにも成功しました。

于 2009-08-05T23:24:55.297 に答える
0

SQLCLR は特定のアセンブリ セットに限定されており、PS オートメーションはその 1 つではないと思いました。

于 2009-07-29T17:30:18.917 に答える