【发布时间】:2011-07-27 13:31:11
【问题描述】:
我编写了一个简单的 UDF,它应该绘制一个图形并将其保存在磁盘上。 实际上,我使用 UDF 作为 SQL SERVER 和 R 之间的代理,因此 UDF 仅通过 DCOM 从 SQL SERVER 将 R 脚本传递给 R 引擎。在我尝试绘制图形或将其保存到磁盘之前,一切正常。我创建了具有 UNSAFE 权限的程序集。
所以,它是这样的: SQL 引擎 -> UDF -> (D)COM SERVER -> R -> (D)COM SERVER -> UDF -> SQL 引擎。
那么,我的第一个问题是,我可以从 UDF 创建 GUI 吗?我猜不是,但值得一问。
第二个问题是,为什么具有 UNSAFE 权限的程序集无法访问文件系统。我没有收到任何错误,只是没有任何反应。
R 环境位于不同的地址空间中,因此我看不出任何原因导致 SQL 引擎的 CLR 权限会影响它。
谢谢
编辑:
我尝试对程序做同样的事情。现在创建了一个空文件。这是我的 R 测试代码:
jpeg("C:\\test1.jpg"); x <- rnorm(100); hist(x); dev.off()
知道这里发生了什么吗?
【问题讨论】:
-
我会运行 SysInternals Filemon 或 Process Monitor 并尝试确定程序集试图在文件系统中执行的操作。您可以使用其中一种工具获得一些可见性。
标签: sql-server r clr user-defined-functions sqlclr