sql-server – 来自UDF的Sql Server CLR文件系统访问

前端之家收集整理的这篇文章主要介绍了sql-server – 来自UDF的Sql Server CLR文件系统访问前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个简单的UDF,应绘制图形并将其保存在磁盘上.
实际上,我使用UDF作为sql SERVER和R之间的代理,因此UDF只通过DCOM将R脚本从sql SERVER传递给R引擎.一切正常,直到我尝试绘制图形或将其保存到磁盘.我使用UNSAFE权限创建了程序集.

所以,它是这样的:
sql引擎 – > UDF – > (D)COM服务器 – > R – > (D)COM服务器 – > UDF – > sql引擎.

所以,我的第一个问题是,我可以从UDF创建GUI吗?我猜不是,但值得一提.

第二个问题是,为什么具有UNSAFE权限的程序集无法访问文件系统.我没有收到任何错误,只是没有任何反应.

R环境位于不同的地址空间中,因此我没有看到sql引擎对CLR的权限会影响它的任何原因.

谢谢

编辑:

我尝试用程序做同样的事情.现在创建一个空文件.这是我的R测试代码

jpeg("C:\\test1.jpg"); x <- rnorm(100); hist(x); dev.off()

知道这里发生了什么吗?

解决方法

>您无法从服务器端代码实例化GUI
> UNSAFE很危险,EXTERNAL_ACCESS会更好,因为它仍然允许文件系统访问
>如果没有错误,那么您的代码很可能正常运行,但它正在执行与您预期的不同的操作;你可以添加一些调试代码或附加调试器吗?
>这里的程序比UDF更合适,因为 they are much more flexible

但目前尚不清楚为什么你这样做.在sql Server外部编写一个小(?)程序以从数据库获取数据,调用R程序并保存图像可能要容易得多. sql Server中的服务器端代码非常适合处理数据,但即使在使用CLR代码时,通常也很难与文件系统和外部资源进行交互.

您是否需要在sql Server中执行此操作?

猜你在找的MsSQL相关文章