SQL Server 2019 Launchpad R Сценарий «Отказано в доступе» ошибка - PullRequest
0 голосов
/ 23 сентября 2019

(редактирование KarMau ): Здесь - это объяснение того, почему мой логин клиента sa не имеет доступа к c: \ temp: «Панель запуска отображает личность вызывающего пользователя нарабочая учетная запись ... Каждая отдельная рабочая учетная запись ограничена своей собственной папкой и не может получать доступ к файлам в папках выше своего уровня. "

Следуя инструкции" Урок 1. Просмотр и визуализация данных"Я получил ошибку.В

mainDir <- ''C:\\temp\\plots''  
dir.create(mainDir, recursive = TRUE, showWarnings = FALSE) 

было выдано Permission denied.

Я запускаю SQL Server 2019 Preview в Windows 10. После поиска решения я нашел команду R getwd (), которая приводитмне C:\\Data\\SQLServer\\MSSQL15.SQLEXPRESS\\MSSQL\\ExtensibilityData\\Appcontainer1, папка моей папки данных SQL Server.Там и только там мой код был успешным для создания файлов.Повторюсь: только в подпапке Appcontainer1.Существует неизвестный пользователь, идентифицированный только по SID S-1-15 ...

Извините, но мне нужно как минимум 10 репутаций для публикации изображений ... пожалуйста, посмотрите здесь

Мои вопросы:

  1. Работает ли SQL Server 2019 с кодом R в песочнице?

  2. Существуют ли другие решения, позволяющие обойти эту проблемупроблема?

Полный скрипт 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

1 Ответ

0 голосов
/ 23 сентября 2019

MSSQL Server обычно запускается как служба в Windows под специальным пользователем, который, вероятно, имеет ограниченный доступ к C:\\temp\\plots.Чтобы сменить пользователя, откройте приложение «Службы» в Windows 10, найдите службу SQL Server.Щелкните правой кнопкой мыши, свойства, вкладка «Вход», измените учетную запись на кого-то, кто имеет доступ к этому местоположению.

...