(由KarMau编辑):Here解释了为什么我的客户端登录名无法访问c:\ temp:“ Launchpad将主叫用户的身份映射到工作人员帐户。 。每个工人帐户都被限制在其自己的文件夹中,并且无法访问其自身级别以上的文件夹中的文件。”
在教程“ Lesson 1: Explore and visualize the data”之后,出现错误。在
mainDir <- ''C:\\temp\\plots''
dir.create(mainDir, recursive = TRUE, showWarnings = FALSE)
被抛出Permission denied
。
我正在Windows 10上运行SQL Server 2019 Preview。在寻找解决方案一段时间后,我发现了R命令getwd(),该命令将我带到C:\\Data\\SQLServer\\MSSQL15.SQLEXPRESS\\MSSQL\\ExtensibilityData\\Appcontainer1
,这是我的SQL Server数据文件夹的文件夹。
只有在那里,我的代码才能成功创建文件。我重复一遍:仅在子文件夹Appcontainer1中。有一个仅由SID S-1-15标识的未知用户...
对不起,但我至少需要10个信誉才能发布图像... please look here
我的问题:
SQL Server 2019是否在沙箱中运行R代码?
还有其他解决方案来解决此问题吗?
完整的T-SQL脚本:
CREATE PROCEDURE [dbo].[RPlotHist]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @query nvarchar(max) =
N'SELECT cast(tipped as int) as tipped, tip_amount, fare_amount FROM [dbo].[nyctaxi_sample]'
EXECUTE sp_execute_external_script @language = N'R',
@script = N'
# Set output directory for files and check for existing files with same names
mainDir <- ''C:\\temp\\plots''
dir.create(mainDir, recursive = TRUE, showWarnings = FALSE)
setwd(mainDir);
print("Creating output plot files:", quote=FALSE)
# Open a jpeg file and output histogram of tipped variable in that file.
dest_filename = tempfile(pattern = ''rHistogram_Tipped_'', tmpdir = mainDir)
dest_filename = paste(dest_filename, ''.jpg'',sep="")
print(dest_filename, quote=FALSE);
jpeg(filename=dest_filename);
hist(InputDataSet$tipped, col = ''lightgreen'', xlab=''Tipped'',
ylab = ''Counts'', main = ''Histogram, Tipped'');
dev.off();
# Open a pdf file and output histograms of tip amount and fare amount.
# Outputs two plots in one row
dest_filename = tempfile(pattern = ''rHistograms_Tip_and_Fare_Amount_'', tmpdir = mainDir)
dest_filename = paste(dest_filename, ''.pdf'',sep="")
print(dest_filename, quote=FALSE);
pdf(file=dest_filename, height=4, width=7);
par(mfrow=c(1,2));
hist(InputDataSet$tip_amount, col = ''lightgreen'',
xlab=''Tip amount ($)'',
ylab = ''Counts'',
main = ''Histogram, Tip amount'', xlim = c(0,40), 100);
hist(InputDataSet$fare_amount, col = ''lightgreen'',
xlab=''Fare amount ($)'',
ylab = ''Counts'',
main = ''Histogram,
Fare amount'',
xlim = c(0,100), 100);
dev.off();
# Open a pdf file and output an xyplot of tip amount vs. fare amount using lattice;
# Only 10,000 sampled observations are plotted here, otherwise file is large.
dest_filename = tempfile(pattern = ''rXYPlots_Tip_vs_Fare_Amount_'', tmpdir = mainDir)
dest_filename = paste(dest_filename, ''.pdf'',sep="")
print(dest_filename, quote=FALSE);
pdf(file=dest_filename, height=4, width=4);
plot(tip_amount ~ fare_amount,
data = InputDataSet[sample(nrow(InputDataSet), 10000), ],
ylim = c(0,50),
xlim = c(0,150),
cex=.5,
pch=19,
col=''darkgreen'',
main = ''Tip amount by Fare amount'',
xlab=''Fare Amount ($)'',
ylab = ''Tip Amount ($)'');
dev.off();',
@input_data_1 = @query
END
答案 0 :(得分:0)
MSSQL Server通常作为Windows上的服务在特殊用户下运行,该用户可能对C:\\temp\\plots
的访问受到限制。要更改用户,请在Windows 10上打开“服务”应用,找到SQL Server服务。右键单击属性,在“登录”选项卡上,将帐户更改为可以访问该位置的人。