1

在过去,我已经能够在 SQLCLR 中嵌入一个 sripting 语言(如 JScript),因此脚本可以作为函数的参数传递,以执行某些计算。这是一个简单的示例(函数 ssScriptExecute 返回脚本中所有打印的串联):

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

-- Calculation: 1.6666666666666665

我希望能够以同样的方式嵌入 Powershell 运行时。但是我遇到了各种各样的问题,因为运行时尝试按路径查找程序集,而 SQlCLR 内部没有路径。我很高兴提供有关我得到的错误的更多信息,但我想知道是否有人尝试过这个!

谢谢!

4

3 回答 3

1

我认为这样做的唯一方法是创建一个 WCF 服务托管 powershell,并让 SQLCLR 将请求 dbo.ssScriptExecute(...) 发送到该服务以执行。除此之外,我还成功地将 paxScript.net 嵌入了 SQLCLR(一个没有 DLR 语言的内存泄漏问题的解释器)。

于 2009-08-05T23:24:55.297 回答
1

我使用 il 代码注入来修改 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 回答
0

我认为 SQLCLR 仅限于一组特定的程序集,而 PS 自动化不是其中之一。

于 2009-07-29T17:30:18.917 回答