在过去,我已经能够在SQLCLR中嵌入脚本语言(如JScript),因此脚本可以作为函数的参数传递,以执行特定的计算。下面是一个简单的示例(函数ssScriptExecute返回脚本中所有打印的串联):
select dbo.ssScriptExecute( 'print("Calculation: "+(1+2/3) );' )
-- Calculation: 1.6666666666666665我希望能够以同样的方式嵌入Powershell运行时。但是我遇到过各种各样的问题,因为运行库尝试按路径查找程序集,而SQlCLR中没有路径。我很乐意提供关于我得到的错误的更多信息,但我想知道是否有人尝试过这种方法!
谢谢!
发布于 2011-07-06 16:50:04
我使用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
发布于 2009-08-05 23:24:55
我认为唯一的方法是创建一个托管powershell的WCF服务,并让SQLCLR发送请求dbo.ssScriptExecute(...)用于执行的服务。除此之外,我还成功地将paxScript.net嵌入到SQLCLR (一个没有DLR语言的内存泄漏问题的解释器)中。
发布于 2009-07-29 17:30:19
我认为SQLCLR仅限于一组特定的程序集,而PS Automation不在其中。
https://stackoverflow.com/questions/1200065
复制相似问题