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中执行此操作?

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...